Amazon Aurora PostgreSQL と Amazon Relational Database Service (Amazon RDS) PostgreSQL の DB パラメータグループのデフォルト値の違いを理解したいと考えています。
解決方法
PostgreSQL では、使用開始時に shared_buffers がシステム内で使用するメモリの割合は、25% が適切だと推奨しています。とはいえ、この値はワークロードからの需要に対応して変更が可能です。ワークロードに対応する適切な shared_buffers の値については、 リソース消費に関する PostgreSQL ドキュメントでご確認ください。
PostgreSQL では、キャッシュ (ダブルバッファリング) を使用する際に、オペレーティングシステムに大きく依存しています。これは、40% 以上の RAM を shared_buffers に割り当てると、より小さい値を割り当てた場合に比べ、パフォーマンスの向上が見込みにくくなることを意味します。
RDS DB インスタンスの場合、DB パラメータグループでのデフォルト値は合計メモリの 25% に設定されています。Aurora DB インスタンスの場合、DB パラメータグループのデフォルト値は、インスタンスクラスに応じて 50% から 75% の間で設定されます。Aurora PostgreSQL はダブルバッファリングを排除し、ファイルシステムキャッシュを利用しないため、Aurora DB インスタンスのデフォルト値は高くなっています。つまり、Aurora PostgreSQL では shared_buffers を大きくして、パフォーマンスを改善できます。Aurora PostgreSQL を使用する場合は、shared_buffers DB パラメータのデフォルト値には、75% を設定することがベストプラクティスです。この値が小さいと、データページが使用可能なメモリが少なくなるため、Aurora ストレージサブシステムの I/O が増加したときに、パフォーマンスの低下が生じる可能性があります。詳細については、「Amazon Aurora PostgreSQL のリファレンス」を参照してください。
注: 一部のワークロードでは、shared_buffers パラメータの値を小さくする必要がある場合があります。この値を減らす必要が生じる事例としては、ワークロードがデフォルト設定よりも多くの接続を受け入れる場合や、より大きな work_mem やmaintenance_work_mem が頻繁に使用される場合などが挙げられます。ただし、 shared_buffers の値を小さくすることは、キャッシュヒット率を低くすることにつながります。その結果、ストレージへのアクセスが頻繁になるため、データベースページに対するアクセスレイテンシーが増加することがあります。
関連情報
パラメータグループを使用する