它将进行普通的垃圾收集,将垃圾空间标识为可用的状态。它不会影响其它事务发出的表上的读操作和
写操作,因为普通的垃圾收集不会在表上加一个互斥锁。
VacuumFull
启动完全垃圾收集,完全垃圾收集会在表上加一个互斥锁,对表进行垃圾回收期间,其它的事务不能对
表进行读操作和写操作。VACUUMFULL比VACUUM的执行时间要长一些,执行的操作也多一些,它在
进行垃圾收集的过程中,可能会将一个记录从一个数据块转移到另一个数据块。
Vacuumanalyze
除了回收垃圾空间还收集优化器统计数据
Vacuumverbose
输出垃圾收集的详细数据。
回收完后,膨胀系数降到3%。
select *, 1.0 - tuple_len::numeric table_len as bloat from pgstattuple('tab_brin1');
表占用473个page。
select * from pg_relpages('tab_brin1');
二、数据库防止事务回卷
Vacuum Freeze
为了保证同一个数据库中的最新和最旧的两个事务之间的年龄不超过2^31,postgresql引入了冻结
(freeze)功能。
涉及到的术语:
1、表年龄:当前事务号距上一次执行freeze操作的事务id的差值
2、元组年龄:当前元组的xmin距上一次执行freeze操作的事务id的差值
如果发生当新老事务id差超过21亿的时候,事务号会发生回卷,此时数据库会报出如下错误并且拒绝接
受所有连接,必须进入单用户模式执行vacuumfreeze操作。
事务冻结操作:
评论