GaussDB(DWS)列存(auto)vacuum特性整理(二)——列存vacuum已知规格整理
主表空间回收
autovacuum触发条件
列存普通表和分区表只有单dn子分区的脏页率大于autovacuum_analyze_scale_factor/2%(默认70/2)且死元组数达到 RelDefaultFullCuSize * 缩放系数 后,才会发起对该表的autovacuum
RelDefaultFullCuSize 默认 6w
分区越多,系数越小普通表和分区数0,24之间 系数 1
分区数25,49之间 系数 1/2
分区数50,99之间 系数 1/4
分区数大于等于100 系数 1/8
比如分区数90,则死元组数阈值 1.5w;分区数190,则死元组数阈值 7.5k
重写触发限制
列存普通表和分区表只有单dn子分区的文件脏页率大于autovacuum_analyze_scale_factor(默认70)且文件大小大于col_min_file_size(32M-1GB) * 缩放系数 后,才会发起对该CU文件的重写
普通表和分区数0,24之间 系数 1
分区数25,49之间 系数 1/2
分区数50,99之间 系数 1/4
分区数大于等于100 系数 1/8
比如col_min_file_size为32MB时,分区数90,则文件大小需要满足8MB;分区数190,则文件大小需要满足4MB
autovacuum单dn上单次重写最大只重写1GB数据,超过大小的会在下次触发再重写
空间回收触发限制
只在有完成重写但未回收的CU文件时触发,且同一个CU文件不会和重写在同一次vacuum触发
deta表merge
autovacuum触发条件
列存delta表或hstore表在如下两种情况下会触发deltamerge:
1.delta表中数据超过6w行
2.有存活数据且距离上次deltamerge间隔超过1小时
辅助表清理
autovacuum触发条件
830100前版本无限制,每次autovacuum都会触发辅助表清理,830100及之后版本只在如下两种情况触发辅助表清理:
1.辅助表中有死亡元组且距离上次清理间隔超过1小时
2.辅助表中的死亡元组数超过存活元组数量的20%
索引清理
列存索引清理目前只支持btree索引清理
autovacuum触发条件
enable_col_index_vacuum开启且满足辅助表清理的触发条件
小CU0CU合并
autovacuum触发条件
小CU0CU清理受两个guc参数控制
autovacuum_compaction_rows_limit:默认-1关闭,可设置为(-1 – 5000)的整数,控制小CU的阈值。
autovacuum_compaction_time_limit:默认0关闭,可设置为(0 - 10080)的整数,单位是分钟,代表可以设置从1分钟到一周的时间范围,控制autovacuum合并小CU的时间触发维度
同时有如下5个约束:
1.autovacuum关闭,或者autovacuum_max_workers设置0,或者colvacuum_threshold_scale_factor设置为-2,都会导致自动合并小(0)CU关闭
2.列存表只支持0CU的清理,不支持小CU合并
3.创建有psort索引的hstore表只支持0CU的清理,不支持小CU合并
5.维度表单独一个小CU且没有脏数据,不会触发小CU合并
vacuum常用guc参数
autovacuum
控制是否启动数据库自动清理进程(autovacuum)
on表示开启数据库自动清理进程
off表示关闭数据库自动清理进程
默认on
autovacuum_max_workers
autovacuum_max_workers_hstore
列存和hstore表的autovacuum清理最大进程数。和autovacuum共同影响autovacuum的行为。
autovacuum_max_workers = 0时,autovacuum被彻底关闭,不会对任何表做清理。
autovacuum_max_workers > 0 和 autovacuum = off,只对系统表和开了delta表的列存表做清理(如vacuum delta表,vacuum cudesc表和delta merge)。
autovacuum_max_workers > 0 和 autovacuum = on,会对所有表做清理。
colvacuum_threshold_scale_factor
控制列存vacuum重写中,重写文件最低dead tuple的比例值。当文件中的dead tuple占(all_tuple - null_tuple)的比例大于此值,该文件才会被重写。
-2表示不会执行vacuum重写,也不会执行vacuum清理;
-1表示不会执行vacuum重写,只会执行vacuum清理;
0-100为dead tuple的比例值。
默认70
col_min_file_size
控制列存vacuum重写中,重写文件的最小值。
整型,单位:KB,32768~1048576。实际生效时会默认向上取整32MB倍数。
默认1GB
enable_col_index_vacuum
控制集群是否进行索引清理。
新安装集群默认开启,老集群升级后默认关闭。
- 点赞
- 收藏
- 关注作者
评论(0)