首页 > 数据库 > 国内数据库 > GBase 8a磁盘空间使用率过高的优化方案(二)
南大通用GBase 8a 集群(gbase database)时常遇到线上节点磁盘使用率飙升至 95% 以上的告警,严重时会阻塞写入、影响业务正常运行。
今天分享两套解决方案,一套 零硬件投入、从存量数据压缩 + 碎片清理入手,最大化节省磁盘,一套硬件扩容兜底,兼顾短期应急与长期业务发展。
方案 1:在线渐进式压缩|业务无中断,线上首选
不用重建全表、无需停机,通过ALTER TABLE修改表压缩配置,存量旧数据不会立刻重压缩,新写入、更新、滚动淘汰的数据会自动采用高压缩策略,磁盘空间随业务数据迭代逐步释放,无大批量 IO 冲击线上业务。
1、多种主流压缩算法怎么选?
Nozip:无压缩,数据原样存储,压缩率接近0%,加载和查询性能与不指定压缩接近,但数据完全重复时查询性能反而下降
HighZ:高压缩比,追求完美压缩,随机数据压缩率约25%-26%,重复数据可达99%,查询性能最差,解压耗时约为STDZ的3-5倍;重复数据时加载性能较好
RapidZ:快速压缩,平衡压缩与速度,随机数据压缩率约5%-7%,重复数据约99%,加载和查询性能接近默认压缩,表现均衡
NewRapidZ:RapidZ的增强版 ,与RapidZ表现基本一致,随机数据约5%-7%,重复数据约99%,与RapidZ性能接近,无明显差异
STDZ:标准压缩,综合最优,随机数据压缩率约50%-52%,重复数据可达99%,空间占用比55压缩少59.8%,加载性能最优,查询性能接近默认压缩,推荐作为第一选择
2、在线修改压缩语法
ALTER TABLE t1 ALTER COMPRESS('STdz',0);
第一个参数指定压缩算法,不设置时show variables显示“NO Setting”
第二个参数0,指定压缩级别,0~9,1压缩比最低,压缩/解压缩速 度最快,9反之。
不设置时show variables显示为0。 默认级别为0,针对不同的原型算法有不同的选取。
3、快速清理空洞碎片
若检查表空洞率较高,搭配碎片整理语句,立刻回收空洞占用磁盘:
按文件级回收(效率较高):
ALTER TABLE table_name SHRINK SPACE;
按行级回收(完全保证有效行原始顺序,效率较低):
ALTER TABLE table_name SHRINK SPACE FULL;
注意事项:
执行 Shrink Space 时会锁表,长时间阻塞查询
只有数据文件中的所有数据都被删除后,该文件才会被释放
最少要保留一个 seg 文件,不会全部删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3180932/ ,如需转载,请注明出处,否则将追究法律责任。