VACUUM

Name

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.

目标表的索引的分析.

描述

VACUUMPostgres 里有两个用途, 一个是重新整理存储区,另一个是为优化器收集信息.

VACUUM 打开数据库中每个表,将回卷的事务的记录清除, 并且更新系统目录里的统计信息.(数据库)维护的统计信息包括记录条数 和所有表使用的存储页面数.

VACUUM ANALYZE 收集代表每一行数据的开销的统计信息. 当存在多个可能的执行路径时,这些信息是非常珍贵的.

定期地运行 VACUUM 可以提高数据库处理用户查询的速度.

注意

打开的数据库是 VACUUM 的目标.

我们建议在每天夜间VACUUMM(清理)生产数据库, 以保证不断地删除失效的行.尤其是在向 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 语句.