インデックスがこのサイズに収まってる場合、効果が最大限発揮される。
[root]# vim /usr/local/pgsql/data/postgresql.conf effective_cache_size = 512MB・インデックススキャン高速化
値を大きくするとシーケンススキャンが採用されやすくなり、 値を小さくするとインデックススキャンが採用され安くなる。
[root]# vim /usr/local/pgsql/data/postgresql.conf random_page_cost = 3.0・データベースエンジンが使用する、共有メモリ内のバッファ領域
[root]# sysctl -a | grep kernel.shm kernel.shmmax = 33554432(32MB) # 共有メモリのバイト単位の大きさの上限 kernel.shmall = 2097152 # システム全体の共有メモリ・ページの最大数 kernel.shmmni = 4096 # 共有メモリのバイト単位の大きさの下限 [root]# cat /proc/sys/kernel/shmmax 33554432(32MB) [root]# vim /etc/sysctl.conf kernel.shmmax = 1073741824(1GB) kernel.shmall = 67108864 [root]# sysctl -p [root]# vim /usr/local/pgsql/data/postgresql.conf shared_buffers = 256MB [root]# systemctl reload-or-restart postgresql [root]# service postgresql reload
update 時、新しいレコードに内容を移動。delete 時、削除マークを付けるだけ。 で共に古いレコードは削除されない。 VACCUM はデータベースの不要領域の回収、およびデータベースの解析を行う。
・不要領域を回収し、最利用可能な状態に変更[user]$ vacuumdb -v -a(全データベース)-U postgres [user]$ vacuumdb -v データベース名 [-t デーブル名] -U 所有者 DB=> vacuum verbose [テーブル名];・統計情報を更新し、問い合わせを最適化
[user]$ vacuumdb -v -z -a(全データベース)-U postgres [user]$ vacuumdb -v -z データベース名 [-t テーブル名] -U 所有者 DB=> vacuum verbose analyze [テーブル名];・テーブルの排他的ロックを行う、完全なバキューム
テーブル内の全ての行を削除した場合のみ実行する
[user]$ vacuumdb -v -f データベース名 [-t テーブル名] -U 所有者 DB=> vacuum verbose full [テーブル名];・自動VACUUM
最後の VACUUM のあとに発生した不要領域の数が閾値を超えると VACUUM が実行される。 閾値 = autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * テーブルの行数
[root]# vim /usr/local/pgsql/data/postgresql.conf autovacuum = on autovacuum_vacuum_threshold = 50 autovacuum_vacuum_scale_factor = 0.2