参数功能
控制shrink操作使用rebalance方式的开关。
取值 0:关闭 shrink to rebalance 功能;
取值 1: 打开 shrink to rebalance 功能;
默认取值:1。
原理特性
- 该参数为862-Build43后的新功能。
打开该参数,执行 alter table t1 shrink space full或者 alter table t1 shrink space full block_reuse_ratio=命令时走 rebalance 逻辑。
可以提升 shrink space性能,不阻塞 insert select、load 等 append only 类型的 DML 操作,支持对 rebalance 中的表的DQL。 - rebalance操作步骤:
1)创建中间表
2)使用 SIS 把原表数据转存到中间表
3)删除原表,
4)rename 中间表 - rebalance相关参数:
gcluster_rebalancing_parallel_degree 重分布并行度,默认值4
gcluster_rebalancing_step 重分布一批次的记录数,默认值1亿
gcluster_rebalancing_immediate_recover_internal_table
0(0FF):rebalance操作处于"Move data to inter table"状态时与gcrecover恢复rebalance中间表操作互斥;
1(0N):rebalance操作处于"Move data to inter table"状态时与gcrecover恢复rebalance中间表操作可以并发;
默认值OFF; - 支持Failover:
1) 在创建中间表、使用SIS把原表数据转存到中间表 这两个步骤时宕机,其他gc接管后回滚到初始状态。
2) 在删除原表,rename中间表为原表步骤宕机,其他gc接管后继续完成。
场景举例
某省移动集市集群(V862-Build33)
- 业务特点:
数据及并发统计分析业务量很大,存储及磁盘IO长期存在瓶颈,存储空间紧张,通过shrink full回收空间需求强烈。定期(每天晚上)批量执行shrink space full操作回收空间(集群版本V862-Build33,不支持shrink to rebalance)。 - 原有模式shrink full存在问题:
1)客户并发业务量大时,同时进行多表shrink space full操作,出现磁盘IO瓶颈,严重时甚至主机夯死。
2)某些字段数很大的表(字段数很多,比如超过几百个),单独做shrink space full操作,也有可能出现上述异常。 - 问题分析:
可能与旧模式shrink操作消耗较大IO资源有关,目前可采取做法包括:错峰执行shrink full、降低并发数或是改为非full方式shink。
更好的方式,采用shrink_to_rebalance对IO资源做精细化控制:
gcluster_rebalancing_parallel_degree 重分布并行度
gcluster_rebalancing_step 重分布一批次的记录数
将上述参数设置为较小的值,降低处理速度,降低IO资源的占用,同时规避shrink与其他追加写入操作的冲突。
使用示例
测试集群:V952.46,12节点
- 试内容:对10亿级表进行shrink space full,对并行度、步长参数进行效果验证。
默认参数:耗时11秒
- 将并行度、步长参数设置为一半:耗时18秒