手动调度
- 登录GaussDB管理控制台。在“实例管理”页面,单击目标实例名称,进入“基本信息”页面。
- 找到“高级特性”字段,单击“查看并修改”,将“高级压缩”的值设置为on。详情可参考查看并修改高级特性
- 连接数据库,然后执行如下命令,打开ilm特性总体开关。如何连接数据库可参考通过gsql连接到数据库。
alter database set ilm = on;
- 执行如下命令,修改ilm的时间单位为秒。
这一步的操作主要是为了加快测试速度。ilm默认的时间单位为天,执行手动压缩时,第一次调度是打时间戳,第二次调度才能压缩,第一次调度和第二次调度的间隔需要超过冷热数据判定时间的阈值才会执行压缩,以秒为时间单位可以加快测试速度。
- 修改ilm的时间单位为秒。
BEGIN DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1); END; /
- 查看修改结果。
select * from gs_ilm_param;
- 修改ilm的时间单位为秒。
- 执行如下命令,修改一次调度最多压缩的数据大小。
本示例以修改为4GB为例。
BEGIN DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 4096); END; /
- 建立带有ILM策略的表。
- 方法一:建表的同时添加策略。
“3 DAYS OF NO MODIFICATION”是判定冷数据的时间阈值。
CREATE TABLE t ( id1 int, id2 int, id3 int, id4 int) WITH (orientation=row, compression=no, storage_type=astore) ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 3 DAYS OF NO MODIFICATION;
- 方法二:先建表再添加策略。
CREATE TABLE t ( id1 int, id2 int, id3 int, id4 int) WITH (orientation=row, compression=no, storage_type=astore); ALTER TABLE t ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 3 DAYS OF NO MODIFICATION;
- 方法一:建表的同时添加策略。
- 执行如下命令插入数据。
insert into t (id1, id2 ,id3 , id4) select s, s, s, s from generate_series(1, 1000000) AS s;
- 执行如下命令查看表t的原始大小,记为size1,本示例中size1 = 42MB。
\d+
- 执行压缩。
- 先执行如下命令。
declare v_taskid number; begin dbe_ilm.execute_ilm('public','t',v_taskid,NULL,'ALL POLICIES',2); end; /
- 等待10s后再次输入9.a中的命令。
- 查询压缩结果。
select * from gs_adm_ilmresults order by task_id desc limit 2;
可以看到,gs_adm_ilmresults打印了一些压缩信息,这里可以看到节约了13664840字节的空间。
- 先执行如下命令。
- 9中实际节约的空间并不一定能被完全复用,需要再次插入一份同样的数据测试真实压缩比,在二次插入数据后再次查看表t占用的空间。
- 插入数据。
insert into t select * from t;
- 查询表t的大小,记为size2,本示例中size2 = 71MB。
\d+
- 插入数据。
- 根据第一次插入数据和第二次插入数据后表t占用的空间计算压缩比。
压缩比 = size1 / (size2 – size1) = 42 / (71 - 42) = 1.45