postgresでJOINを多用している処理が激重だったので臨時対応したメモ
【参考】
→work_memの最大は(実メモリ-shared_buffers)/max_connections
→work_memの経験は実メモリ/max_connections/[4-16]
PostgreSQLのチューニング その1 – Mindcircus.jp
→work_mem = 搭載メモリ / max_connections / 4
■PostgreSQLパラメータ作成サイト
pgtune.leopard.in.ua
【作業メモ】
cat /var/lib/pgsql/data/postgresql.conf
max_connections = 100 # (change requires restart) #work_mem = 1MB # min 64kB
→現サーバのメモリは1GBなので
work_mem =1024/100/4 = 2.56
max_connections = 100 # (change requires restart) work_mem = 2MB # min 64kB
これだとあまりかわらなかった
max_connections = 10 # (change requires restart) work_mem = 25MB # min 64kB
これだと劇的に高速化した。
あくまで一例ですが。
■おまけ
# 現在実行中のクエリを確認
SELECT * FROM pg_stat_activity;
# 重いプロセスをkill
SELECT pg_cancel_backend(procpid);