PostgreSQLエラー「number of page slots needed (20208) exceeds max_fsm_pages (20000)」の原因と解決方法
vacuumdbを実行すると、掲題のエラーが表示されることがある。
《例》
/usr/bin/vacuumdb -U postgres -a -f -z
vacuumdb: vacuuming database "postgres"
NOTICE: number of page slots needed (20208) exceeds max_fsm_pages (20000)
HINT: Consider increasing the configuration parameter "max_fsm_pages" to a value over 20208.
このエラーは、以下のようなログファイルにも記録されていた。
/var/lib/pgsql/data/pg_log/postgresql-Fri.log
このエラーにはヒントも付いており、「max_fsm_pagesの設定値を20208以上に増やすことを検討することを検討してください」ということなので、その通りにしてみる。
vi /var/lib/pgsql/data/postgresql.conf
----------------------------------------------------------------------------------
#max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each
↓
max_fsm_pages = 20208
----------------------------------------------------------------------------------
※/var/lib/pgsql/data/postgresql.confを編集してmax_fsm_pagesの値をデフォルト(初期値)の20000から20208に変更する。
PostgreSQLのサービスを再起動すると設定が反映される。
/etc/rc.d/init.d/postgresql restart ※PostgreSQLの再起動コマンド
これで、問題なくvacuumdbができるようになる。
※今後のことを考えると、20208というギリギリの値ではなく、40000など余裕を持たせた適当な値にしておくとよさそう。