在大数据环境下,有的业务场景需要释放磁盘空间,最有效的手段是释放被删除的数据文件所占的磁盘空间。
语法格式
ALTER TABLE [vc_name.][database_name.]table_name SHRINK SPACE [FULL] | [FULLBLOCK_REUSE_RATIO= num]
FULL:行级回收,按行级原始顺序对 DC 内有效数据进行整理,重新落盘写 seg文件。只要有删除的数据,删除数据的空间就会被回收。有效行的顺序跟回收前保持一致,效率较低。
FULL BLOCK_REUSE_RATIO:块级(DC)回收,DC 中有效数据占比大于等于设置值时该 DC 保留重用,有效数据占比低于该设置值时 DC 空间进行整合,回收无效数据空间,DC 整合后重新落盘写 seg 文件,无法保证原始顺序。
原有语法:seg 级回收。seg 内所有数据都被删除,则该 seg 文件空间回收。
注意
seg 级回收,不回收索引文件及 rowid。
行级回收和块级回收,会回收索引文件和 rowid。
磁盘空间回收命令仅针对表。
包含行存列的表不支持行级回收和块级回收。
如果删除数据命中所有数据,则有尾块数据的文件不被清理。
磁盘空间回收过程中需要一定的磁盘空间来备份部分元数据文件,在没有可用空间的情况下执行该命令会报错,这时需要手工清理一部分空间(一般需要 1G 空间)再执行该命令进行空间回收。
rebalance 实现 shrink space 功能和原 shrink space 功能共存,用参数 gcluster_shrink_to_rebalance 控制。默认值 0; 取值 1打开 shrink to rebalance 功能;可以提升 shrink spaces 性能,不阻塞 insert select、load 等 append only 类型的 DML 操作,支持对 rebalance 中的表的DQL。




