VACUUM [ VERBOSE ] [ ANALYZE ] [ table ] VACUUM [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]
为每个表打印一份详细的清理工作报告.
更新用于优化器的列/字段统计信息,以决定执行查询的最有效方法.
要清理的表的名称.缺省时是所有表.
要分析的具体的列/字段名称.缺省是所有列/字段.
命令被接受并且数据库被清理了.
表 table 的报告头.
表 table 自身的分析数据.
目标表的索引的分析.
VACUUM 在 Postgres 里有两个用途, 一个是重新整理存储区,另一个是为优化器收集信息.
VACUUM 打开数据库中每个表,将回卷的事务的记录清除, 并且更新系统目录里的统计信息.(数据库)维护的统计信息包括记录条数 和所有表使用的存储页面数.
VACUUM ANALYZE 收集代表每一行数据的开销的统计信息. 当存在多个可能的执行路径时,这些信息是非常珍贵的.
定期地运行 VACUUM 可以提高数据库处理用户查询的速度.
下面是一个在 regression (蜕变)数据库里某个表上执行 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