【干货分享】浅析VACUUM清理
作者:崔鹏 拥有十年以上的PostgreSQL、MYSQL、Oracle等技术支持和服务经验,涉及银行、公共安全、专网通信等行业。适配过多种主流数据库,对于信创国产化、等保适配、MYSQL迁移PostgreSQL等有丰富的实战经验。主导开发使用警用数字集群标准的多产品PG HA解决方案。 VACUUM功能概述: PostgreSQL有一个可选但是被推荐的特性autovacuum(从8.1版本加入),它的目的是自动执行VACUUM和ANALYZE 命令,回收被表示为删除状态记录的空间。 对表元组的UPDATE或DELETE操作并未立即删除旧版本的数据,表中的旧元组只是被标识为删除状态,并未立即释放空间。 这种处理对于多版本并发控制(MVCC)是必要的,如果一个元组的版本仍有可能被其它事务看到,那么久不能删除元组的该版本。 当事务提交后,过期元组版本将对事务不再有效,因而其占据的空间必须回收以供其他新元组使用,以避免磁盘空间被消耗殆尽。 一、清理分类 1. 普通清理 vacuum 不会清理重组空间,只会使元组空间被重用,表的末尾页面会被截断。 src/include/storage/it...










































