首页 > 数据库 > 数据库开发技术 > PostgreSQL 17 vacuum功能增强
下面这篇文章整理过vacuum的一些实用功能:
同时指定多个表
跳过被锁住的表
跳过索引清理
并行清理索引
配置内存用量
快捷清理TOAST表
解藕更新统计信息
schema级按需清理
已经发布的17 beta1对vacuum做了一些功能增强,本文将进行介绍。
使用新的TidStore结构更有效的存储元组,并突破内部固化的1GB限制
合并了prune和freeze的WAL的记录格式,降低WAL生成量
表没有索引时,vacuum剪枝阶段直接标记LP_UNUSED,跳过LP_DEAD标记处理
guc参数vacuum_buffer_usage_limit默认值由256kB变为2MB,默认处理32个数据块太保守。
pg_stat_progress_vacuum视图发生如下变化
max_dead_tuples字段名称变为max_dead_tuple_bytes
num_dead_tuples字段名称变为dead_tuple_bytes
上面两个字段由原来的统计元组数量改为统计字节量。
增加indexes_total字段
增加indexes_processed字段
例如下面可以观察到表上处理索引的进度为60%
...
phase | vacuuming indexes
index_total | 5
index_processed | 3
新增预置角色pg_maintain允许普通用户执行vacuum维护操作,同时还包括analyze、reindex、refresh materialized view、cluster、lock table。
使用示例如下:
GRANTpg_maintainTO myuser;
另外也可细粒度控制到单个表:
GRANTmaintainON TABLE mytab TO myuser;
vacuumdb工具–all选项可与–table, --schema, --exclude-schema同时使用来对所有数据库的对象进行处理。
例如下面的语句:
$ vacuumdb --all --schema pg_catalog
在16里执行会提示如下错误:
vacuumdb: error: cannot vacuum specific schema(s) in all databases
在17里可以正常执行:
vacuumdb: vacuuming database "postgres"
vacuumdb: vacuuming database "template1"
希望新版本新增的vacuum功能可以我们更好的做好数据清理工作。
微信公众号:象楚之行
墨天轮:https://www.modb.pro/u/15675
微信:skypkmoon
勤耕细作,用心积微;静待花开,量变质成。
原文作者:象楚之行;如有侵权,请联系管理员删除。