更新时间:2025-08-19 GMT+08:00
分享

自动调度

  1. 登录GaussDB管理控制台。在“实例管理”页面,单击目标实例名称,进入“基本信息”页面。
  2. 找到“高级特性”字段,单击“查看并修改”,将“高级压缩”的值设置为on。
  3. 连接数据库,创建带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);

    执行结果示例如下:

  4. 配置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);

    执行结果示例如下:

  5. 等待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());

    执行结果示例如下:

  6. 查询调度任务的压缩结果。

    \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());

    执行结果示例如下:

相关文档