更新时间:2025-08-19 GMT+08:00
自动调度
- 登录GaussDB管理控制台。在“实例管理”页面,单击目标实例名称,进入“基本信息”页面。
- 找到“高级特性”字段,单击“查看并修改”,将“高级压缩”的值设置为on。
- 连接数据库,创建带ilm策略的数据表,并插入数据。如何连接数据库可参考通过gsql连接到数据库。
create database adb; \c adb alter database set ilm = on; create table t1 (id int) with (orientation=row, compression=no, storage_type=astore) ilm add policy row store compress advanced row after 3 days of no modification; insert into t1 select * from generate_series(1, 10000000);
执行结果示例如下:
- 配置ilm自动调度系统参数。
调用DBE_ILM_ADMIN.CUSTOMIZE_ILM接口来修改调度相关的系统参数,分别传入参数对应的id以及value。这里修改了三条数据,分别是将自动调度执行频率修改为1分钟1次、将数据变冷行的时间单位修改成秒、将每个压缩job每次压缩的数据量大小设置为10M。其他参数可以不用修改,使用默认配置即可。
\c adb CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 1); CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1); CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 10);
执行结果示例如下:
- 等待3秒让数据变冷行之后,开启自动调度。
\c adb select pg_sleep(3); CALL DBE_ILM_ADMIN.DISABLE_ILM(); CALL DBE_ILM_ADMIN.ENABLE_ILM(); \c template1 call DBE_SCHEDULER.set_attribute('maintenance_window_job','start_date',NOW());
执行结果示例如下:
- 查询调度任务的压缩结果。
\c adb select * from gs_adm_ilmresults;
执行结果示例如下:
调度任务一分钟执行一次,所以每隔一分钟才会生成一个新的压缩job。SpaceSaving为压缩收益大小,值越大表示压缩收益越大。
如果想让表尽快地压缩完成,可以将每个压缩job每次压缩的数据量大小设置得更大一些,比如1024,然后重新启动调度任务,并隔一分钟再次查看压缩结果。\c adb CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 1024); select pg_sleep(3); CALL DBE_ILM_ADMIN.DISABLE_ILM(); CALL DBE_ILM_ADMIN.ENABLE_ILM(); \c template1 call DBE_SCHEDULER.set_attribute('maintenance_window_job','start_date',NOW());
执行结果示例如下:
父主题: 行存压缩最佳实践