PostgreSQLのパフォチューメモ
提供: Astarisk Works Wiki
目次 |
パフォーマンスチューニング向上のポイント
- 共有メモリの調整
- 共有バッファの調整
- チェックポイントの調整
テーブル、インデックス、シーケンス、ビューのサイズを求める
次のSQLで各テーブルのサイズが求められる。
SELECT relname, relkind, reltuples as rows, pg_relation_size(oid) as bytes FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname='public') order by relkind, relname
共有メモリの調整
共有メモリに関してはPostgreSQLではなくOSの設定となる。 変更するには/proc/sys/kernel/shmmaxにメモリの容量を設定する。 次の例は64MB(67108864バイト=64×1024×1024)に設定するときの例。
root>echo 67108864 >/proc/sys/kernel/shmmax
ただし、この方法ではサーバの再起動で元の値にリセットされる。 OS起動時に自動的に設定されるようにするには上のコマンド例を/etc/rc.d/rc.sysinitに追加しておく
Ubuntuなら/etc/sysctl.confに次に記述を追記する(128MBにする場合の例)
kernel.shmmax=134217728
ファイルに追記後、すぐに反映させるには次のコマンドを使う
# sysctl -p
共有メモリの使用状況は ipcsコマンドで調べられる
#ipcs -m ------ 共有メモリセグメント -------- キー shmid 所有者 権限 バイト nattch 状態 0x02ca2451 1376256 postgres 600 1002233856 15
共有バッファの調整
共有バッファとはPostgreSQLがテーブルからデータを読み込み処理するために使うバッファ領域である。
共有バッファの数はpostgresql.confのshared_buffersパラメータで設定する。
少なくともmac_connectionsで設定する最大接続数の2倍の数が必要だが、共有バッファが使うメモリ量はOSに設定した共有メモリのサイズを超えてはいけない。
DBが起動しなくなってしまう。
目安としては運用で利用するテーブル群が格納できる容量を設定する。 通常運用でアクセスするテーブルサイズを8192で割った値がshared_buffersに設定する値となる。