pg_class 視圖中的 relallvisible 欄位顯示在表的可見性圖中標記為全部可見的頁數。
當我嘗試這個例子時:
INSERT INTO foo (x) SELECT n FROM generate_series(1, 10000000) as n;
analyze table foo;
select nspname, relpages, reltuples, relallvisible, relfrozenxid, relminmxidfrom pg_class as c
join pg_namespace as ns on c.relnamespace = ns.oid
where relname = 'foo';
nspname | relpages | reltuples | relallvisible | relfrozenxid | relminmxid
--------- ---------- ------------- --------------- -------------- ------------
public | 44248 | 9.99998e 06 | 0 | 60995 | 1
(1 row)
為什么 relallvisible 欄位等于 0 而不是等于 44248 的總頁數?
uj5u.com熱心網友回復:
因為VACUUM從來沒有跑過桌子。該命令構建并維護可見性地圖。
您可能使用的是 PostgreSQL v12 或更低版本,并且表沒有收到足夠的更新或洗掉來觸發 autovacuum。如果您的用例涉及僅插入表,請升級 – 從 v13 開始,autovacuum 也將在僅插入表上運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346950.html
標籤:PostgreSQL
