PostgreSQL7.0手册-用户手册-19. SQL命令-VACUUM

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 13:43:42
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 (回归)数据库里某个表上执行 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 语句.

Tags:

作者:佚名
分享到: 微信 更多