Postgresql 9.5データベースで自動バキュームを設定しようとしていますが、テーブルの統計にはその証拠がありません。
Postgresql.confでは、自動バキュームはすでに有効になっています。
autovacuum = on
設定に加えて、私は(select * from pg_settings where category like 'Autovacuum'
)
autovacuum on
autovacuum_analyze_scale_factor 0.1
autovacuum_analyze_threshold 50
autovacuum_freeze_max_age 200000000
autovacuum_max_workers 3
autovacuum_multixact_freeze_max_age 400000000
autovacuum_naptime 60
autovacuum_vacuum_cost_delay 20
autovacuum_vacuum_cost_limit -1
autovacuum_vacuum_scale_factor 0.2
autovacuum_vacuum_threshold 50
このクエリを実行すると:
SELECT schemaname, relname,
last_vacuum ,
last_autovacuum ,
last_analyze ,
last_autoanalyze
FROM pg_stat_all_tables
where schemaname = 'cdi'
私はこの結果を得る:
relname last_vacuum last_autovacuum last_analyze last_autoanalyze aa 11/11/2017 05:56 04/11/2017 03:24 13/11/2017 23:25 bb 09/10/2017 15:01 04/11/2017 03:55 09/10/2017 15:01 cc 13/09/2017 13:23 04/11/2017 03:55 11/11/2017 04:12 dd 14/09/2017 10:27 04/11/2017 03:55 12/11/2017 17:09 ee 14/09/2017 10:32 04/11/2017 03 :00
ff 11/10/2017 09:20 04/11/2017 03:48 13/11/2017 22:19 gg 04/11/2017 03:55
hh 04/11/2017 03:55
ii 04/11/2017 03:16 11/11/2017 06:51 ll 04/11/2017 03:16
mm 2017年4月11日03:55
nn 04/11/2017 03:55
oo 04/11/2017 03:55
pp 2017年4月11日03:00
効率的な自動真空があるようには見えません
誰かが自動真空を発生させる方法を教えてもらえますか?
これは私のテーブルです:
シーケンシャルスキャン156 シーケンシャルタプルの読み取り5448762930 インデックススキャン802121339750 インデックスタプルのフェッチ800736733206 タプルの挿入21907385 タプルの更新6190 タプル削除190337 タプルHOT更新3958397 ライブタプル59641911 デッドタプル703334 ヒープブロック読み取り13685226418 ヒープブロックヒット786803454925 インデックスブロックの読み取り5104418623 インデックスブロックの読み取り3208275818736 トーストブロックの読み取り0 トーストブロックの読み取り0 トーストインデックスブロックの読み取り0 トーストインデックスブロックが0にヒット 最後のバキューム2017-10-1109:20:22.358935 + 02 最後の自動バキューム 最後の分析2017-11-0403:48:49.753917 +01 最後の自動分析2017-11-1322:19:08.47618 + 01 バキュームカウンター1 自動バキュームカウンター0 分析カウンター10 カウンター3の自動分析 テーブルサイズ6778MB トーストテーブルサイズ8192バイト インデックスサイズ3969MB
自動バキュームは、必要な場合にのみ実行されます。
変更または削除された行が多すぎる場合は、最後のVACUUM
を実行します。
トランザクションカウンターのラップアラウンドによるデータ損失を防ぐために「凍結」する必要があるほど古い行がある場合。
詳細については、 ドキュメント を参照してください。
一部のテーブルで自動バキュームが実行されなかった場合は、まだ実行する理由がなかった可能性もあります。