そーだいなるらくがき帳

そーだいが自由気侭に更新します。

RDS for PostgreSQL で変更すべきパラメータチューニング

※追記(タイトルにRDSと書いたがPostgreSQL限定である)

RDSはデフォルトでパラメータをチューニングされているものの、本番でそれなりに使うにはチューニングが必要。 そこで最初にある程度チューニングしておくべき場所を記載していく。

AWSのパラメータについては下記を参考。

docs.aws.amazon.com

デッドロックの検査間隔

soudai.hatenablog.com

deadlock_timeout はデフォルトは1000msになっている。 1秒はPostgreSQLのデフォルトなので短い。 10秒以上と書いているが弊社の場合は40秒にしている。 これは明確な基準値を持って決めてるわけでは無く、pg_stat_database.deadlocks の値が今までずっと0なので強気に付けている。

checkpointの値

Google検索すると checkpoint_segments を変更しようという記事が多く引っかかると思うがPostgreSQL10では廃止になった。 変更するのは checkpoint_timeoutcheckpoint_completion_target の2つ。 checkpoint_timeout はRDSは5分だが30分くらいに伸ばすのが一般的。 弊社は60分にしている。 checkpoint_completion_targetは (checkpoint_timeout-2分)/checkpoint_timeout の値が良いとされる。 そのため弊社では 0.95 を設定している。

この2つの記事がとても良いのでcheckpointの調整についてはこれを見るのが良い。

qiita.com

qiita.com

場合によって調整する項目

必須ではないがレプリケーションのスタンバイのクエリが殺される場合などVACUUMが問題になっている場合はVACUUMの頻度を下げたり、逆に増やしたりする調整もあるだろう。 また hot_standby_feedback =1 を有効にし、スタンバイのクエリを殺させないようにするケースもある。 細かいパラメータについては 日本PostgreSQLユーザ会 関西支部 のスライドを感謝しながら読もう。 とても参考になる。

PostgreSQL11 設定パラメーター解体新書 / PostgreSQL 11 parameter - Speaker Deck

その他

PostgreSQLをチューニングするための監視項目についてはこちらを参考にした上で、統計情報を見るのが良い。

soudai.hatenablog.com

追記

※2019/03/05 13:57 追記

atsuizo.hatenadiary.jp

こうやって知見の共有が繋がるのは嬉しいし、とても助かりますね!! 圧倒的感謝。