Aurora PostgreSQL の shared_buffers DB パラメータのデフォルト値が Amazon RDS PostgreSQL のデフォルト値よりも大きいのはなぜですか?

所要時間1分
0

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_memmaintenance_work_mem が頻繁に使用される場合などが挙げられます。ただし、 shared_buffers の値を小さくすることは、キャッシュヒット率を低くすることにつながります。その結果、ストレージへのアクセスが頻繁になるため、データベースページに対するアクセスレイテンシーが増加することがあります。


関連情報

パラメータグループを使用する

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ