http://blog.asial.co.jp/383
PostgreSQLを遅くしている犯人はどこだ?
確認
# ipcs -l -m ------ シェアードメモリの制限 -------- セグメント数の最大値 = 4096 セグメントサイズの最大 (単位:KB) = 32768 max total shared memory (kbytes) = 8388608 最小セグメントサイズ (単位:KB) = 1
128MBに設定 128 * 1024 * 1024 = 134217728
# echo 134217728 > /proc/sys/kernel/shmmax
再確認
# ipcs -l -m ------ シェアードメモリの制限 -------- セグメント数の最大値 = 4096 セグメントサイズの最大 (単位:KB) = 131072 max total shared memory (kbytes) = 8388608 最小セグメントサイズ (単位:KB) = 1
再起動時も有効にするため2行追加
# vi /etc/sysctl.conf kernel.shmall = 134217728 kernel.shmmax = 134217728
サーバー再起動
共有バッファでPostgreSQLが独自に用意しているディスクキャッシュ
shared_buffers = 10000 OR shared_buffers = 24MB
ソートバッファでテーブルの結合、ソート時に利用される
PostgreSQL8より前は sort_mem
work_mem = 4096 OR work_mem = 4MB
トランザクションログバッファを調節
wal_buffers = 32 OR wal_buffers = 64kB