在上一篇博客的基础上执行vacuum full:
mydb=# vacuum full tbl_kenyon ;
VACUUM
mydb=# select pg_size_pretty(pg_relation_size('tbl_kenyon'));
pg_size_pretty
----------------
1289 MB
(1 row)
mydb=# select count(*) from tbl_kenyon ;
count
----------
16000000
(1 row)
vacuum 与 vacuum all的区别:
vacuum 就是进行扫除,找到那些旧的“死”数据,把它们所知的行标记为可用状态。但是它不进行空间合并。
vacuum full,就是除了vacuum,还进行空间合并,因此它需要lock table。
而 autovacuum,可以理解为定时自动进行vacuum 。
对于有大量update的表,vacuum full是没有必要的,因为它的空间还会再次增长,所以vacuum就足够了。