常见问题
- Q:为什么使用高级压缩之后,gs_adm_ilmresults系统表中显示有spaceSaving不为0,但是\d+查看表大小没有变化?
A:高级压缩方案为区分冷热的页内压缩,可以简单理解为将一个盒子内物品进行挤压,使得剩余可用空间变多了,但是盒子大小没变,还是占用这么大的空间;因此只有再次往表中插入数据中,才能复用这些空间,故高级压缩更适合需要冷热分离,业务还会继续增长的场景。
- Q:为什么手动调度了好几次接口,查看gs_adm_ilmresults系统表中spaceSaving都显示的0?
- Q:为什么已经设置enable_ilm = on了,还要在database中alter database set ilm =on?
A:enable_ilm这个guc参数是用来控制压缩功能是否开启和关闭的,只用来控制是否开启压缩功能的实例级参数,这个参数不会影响已压缩的数据。alter database set ilm = on;这个语句用于开启某个数据库的压缩功能,如果你想在某个库里使用压缩,就需要执行这个sql语句,是库级别的。
- Q:如何关闭压缩功能?
A:可使用DBE_ILM_ADMIN.DISABLE_ILM()关闭自动调度压缩,若是要彻底关闭功能则将guc:enable_ilm设置为off(注:已压缩的数据即使关闭了压缩功能,也不会解压还原)。
- Q:什么业务场景适合使用高级压缩?
- Q:如何计算压缩比?
A:可准备一份备份数据,建表插入数据后,记录表大小size1;确保全表压缩完毕后,再次往表内插入相同数据,记录表大小size2。压缩比即为size1/(size2-size1)。
- Q:高级压缩和透明压缩的区别是什么?如何选择?
A:高级压缩是页内行级别的压缩,压缩后能在有限的页面内存储更多的行,压缩完毕的空间在后续的插入数据中能得到使用,即物理磁盘已经占用的空间大小并不会减少;相对于跨页透明压缩压缩率偏小,性能影响较小,适用于温热的数据,数据还会增长的场景。透明压缩则是页内逻辑完全不动,支持跨页压缩,在物理文件层面实现多页压缩,压缩完毕后使用更小的物理块存储,压缩率相对较高,有一定的性能损失,适用于冷数据,不经常改动的数据;相比于高级压缩,压缩后的空间能立马释放出来,物理磁盘空间相比于未压缩时会减少。
- Q:自动调度压缩什么时候开启?
A:上述操作步骤仅为测试压缩功能时使用,正常业务场景使用时,创建维护窗口并CALL DBE_ILM_ADMIN.ENABLE_ILM()后,调度任务默认会在每天的北京时间22:00至次日凌晨2:00开启,每隔15分钟调度一次压缩任务(为了降低压缩对业务的影响,在业务低峰期进行调度任务)。