PostgreSQL7.0手冊-用戶手冊-19. SQL命令-VACUUM
2019-09-08 23:33:36
供稿:網友
VACUUM
名稱
VACUUM ― 清理和分析 Postgres 數據庫
語法
VACUUM [ VERBOSE ] [ ANALYZE ] [ table ]
VACUUM [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
輸入
VERBOSE
為每個表打印一份詳細的清理工作報告.
ANALYZE
更新用于優化器的列/字段統計信息,以決定執行查詢的最有效方法.這些統計信息反映了每列/字段里的數據的支出.當(查詢有)多條執行路徑的可能時,這些信息就是非常珍貴的.
table
要清理的表的名稱.缺省時是所有表.
column
要分析的具體的列/字段名稱.缺省是所有列/字段.
輸出
VACUUM
命令被接受并且數據庫被清理了.
NOTICE: --Relation table--
表 table 的報告頭.
NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0; Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188; Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74. Elapsed 0/0 sec.
表 table 自身的分析.
NOTICE: Index index: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
目標表的索引的分析.
描述
VACUUM 在 Postgres 里有兩個用途,一個是重新整理存儲區,另一個是為優化器收集信息.
VACUUM 打開數據庫中每個表,將回卷的事務的記錄清除,并且更新系統目錄里的統計信息.(數據庫)維護的統計信息包括記錄條數和所有表使用的存儲頁面數.
VACUUM ANALYZE 收集代表每一行數據的開銷的統計信息.當存在多個可能的執行路徑時,這些信息是非常珍貴的.
定期地運行 VACUUM 可以提高數據庫處理用戶查詢的速度.
注意
打開的數據庫是 VACUUM 的目標.
我們建議在每天夜間清理生產數據庫,以保證統計數據足夠新.不過,VACUUM 查詢可以在任何時候進行.尤其是在向 Postgres 中拷貝了一個大表或刪除了大量記錄后,執行一個 VACUUM ANALYZE 查詢是一個很好的習慣.這樣做將更新系統目錄為最近的更改,并且允許 Postgres 查詢優化器在規劃用戶查詢時有更好的選擇.
用法
下面是一個在 regression?。ɑ貧w)數據庫里某個表上執行 VACUUM 的一個例子:
regression=> vacuum verbose analyze onek;
NOTICE: --Relation onek--
NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0;
Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188;
Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74.
Elapsed 0/0 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Rel onek: Pages: 98 --> 25; Tuple(s) moved: 1000. Elapsed 0/1 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
VACUUM
兼容性
SQL92
在 SQL92 里沒有 VACUUM 語句.