GaussDB-运维TIPS
GaussDB-运维TIPS
高级压缩特性使用前必须先联系工作人员购买License,否则执行相关命令会报错。
- 手动触发一次压缩(示例中一次压缩102400MB)。
- 给表加上冷热分离策略:
gaussdb=# DROP TABLE IF EXISTS ILM_TABLE; gaussdb=# CREATE TABLE ILM_TABLE(a int); gaussdb=# ALTER TABLE ILM_TABLE ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 3 MONTHS OF NO MODIFICATION; - 手动触发压缩:
DECLARE v_taskid number; BEGIN DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1); DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 102400); DBE_ILM.EXECUTE_ILM(OWNER => '$schema_name', OBJECT_NAME => 'ilm_table', TASK_ID => v_taskid, SUBOBJECT_NAME => NULL, POLICY_NAME => 'ALL POLICIES', EXECUTION_MODE => 2); RAISE INFO 'Task ID is:%', v_taskid; END; / - 查看压缩JOB是否完成,可以看到具体的执行信息:
gaussdb=# SELECT * FROM gs_adm_ilmresults ORDER BY task_id desc; task_id | job_name | start_time | completion_time | statistics ---------+------------------------------------------+---------------------+---------------------+-------------------------------------------------------- 17267 | ilmjob$_2 | 2023-03-29 08:11:25 | 2023-03-29 08:11:25 | SpaceSaving=453048,BoundTime=1680145883,LastBlkNum=128
- 给表加上冷热分离策略:
- 手动停止压缩:
gaussdb=# DBE_ILM.STOP_ILM (task_id => V_TASK, p_drop_running_Jobs => FALSE, p_Jobname => V_JOBNAME);表1 DBE_ILM.STOP_ILM输入参数 名称
描述
task_id
指定待停止ADO task的描述符ID。
p_drop_running_Jobs
标识是否停止正在运行的JOB。
p_Jobname
标识待停止的特定JobName,通过GS_MY_ILMEVALUATIONDETAILS视图可以查询。
- 为表生成策略及后台调度压缩任务。
- 给表加上冷热分离策略:
gaussdb=# DROP TABLE IF EXISTS ILM_TABLE; gaussdb=# CREATE TABLE ILM_TABLE(a int); gaussdb=# ALTER TABLE ILM_TABLE ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 3 MONTHS OF NO MODIFICATION; - 设置ILM执行相关参数:
BEGIN DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1); DBE_ILM_ADMIN.CUSTOMIZE_ILM(12, 10); DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 1); DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 512); END; /
- 开启后台的定时调度:
gaussdb=# CALL DBE_ILM_ADMIN.DISABLE_ILM(); gaussdb=# CALL DBE_ILM_ADMIN.ENABLE_ILM(); - 用户可以根据需要,调用DBE_SCHEDULER.set_attribute设置后台维护窗口的开启时间。当前默认22:00开启。
- 给表加上冷热分离策略:
- 设置ILM执行相关参数。
控制ADO的条件单位是天还是秒,秒仅用来做测试用。取值为ILM_POLICY_IN_SECONDS = 1或ILM_POLICY_IN_DAYS = 0(默认值):
gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1);控制一次ADO Task最多生成多少个ADO Job。取值范围大于等于0小于等于2147483647的整数或浮点数,作用时向下取整:
gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(12, 10);ADO Task的执行频率,单位分钟,默认值15。取值范围大于等于1小于等于2147483647的整数或浮点数,作用时向下取整:
gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 1);控制单个ADO Job可以处理的最大字节数,单位兆。取值范围大于等于0小于等于2147483647的整数或浮点数,作用时向下取整:
gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 512); - 评估一张表是否适合压缩及评估压缩后带来多少收益。
gaussdb=# DBE_COMPRESSION.GET_COMPRESSION_RATIO ( scratchtbsname IN VARCHAR2, ownname IN VARCHAR2, objname IN VARCHAR2, subobjname IN VARCHAR2, comptype IN NUMBER, blkcnt_cmp OUT PLS_INTEGER, blkcnt_uncmp OUT PLS_INTEGER, row_cmp OUT PLS_INTEGER, row_uncmp OUT PLS_INTEGER, cmp_ratio OUT NUMBER, comptype_str OUT VARCHAR2, sample_ratio IN INTEGER DEFAULT 20, objtype IN PLS_INTEGER DEFAULT OBJTYPE_TABLE);表2 DBE_COMPRESSION.GET_COMPRESSION_RATIO输入参数 名称
描述
scratchtbsname
数据所在空间名称。
ownname
数据对象的拥有者名称。
objname
数据对象名称。
subobjname
数据的分区名称,默认为NULL。
comptype
压缩类型:COMP_NOCOMPRESS和COMP_ADVANCED。
sample_ratio
采样比例,输入为0-100的整数或浮点数,对应为百分之N的采样比例。默认为20,即对20%的行数进行采样。
objtype
对象类型,本期支持的类型为`OBJTYPE_TABLE`。
表3 DBE_COMPRESSION.GET_COMPRESSION_RATIO输出参数 名称
描述
blkcnt_cmp
样本被压缩后占用的块数。
blkcnt_uncmp
样本未压缩占用的块数。
row_cmp
样本被压缩后单个块内可容纳的行数。
row_uncmp
样本未被压缩时单个数据块可容纳的行数。
cmp_ratio
压缩比,blkcnt_uncmp除以blkcnt_cmp。
comptype_str
描述压缩类型的字符串。
示例:
gaussdb=# ALTER DATABASE set ilm = on; gaussdb=# CREATE user user1 IDENTIFIED BY '********'; gaussdb=# CREATE user user2 IDENTIFIED BY '********'; gaussdb=# SET ROLE user1 PASSWORD '********'; gaussdb=# CREATE TABLE TEST_DATA (ORDER_ID INT, GOODS_NAME TEXT, CREATE_TIME TIMESTAMP) ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION; INSERT INTO TEST_DATA VALUES (1, '零食大礼包A', NOW()); DECLARE o_blkcnt_cmp integer; o_blkcnt_uncmp integer; o_row_cmp integer; o_row_uncmp integer; o_cmp_ratio number; o_comptype_str varchar2; begin dbe_compression.get_compression_ratio( SCRATCHTBSNAME => NULL, OWNNAME => 'user1', OBJNAME => 'test_data', SUBOBJNAME => NULL, COMPTYPE => 2, BLKCNT_CMP => o_blkcnt_cmp, BLKCNT_UNCMP => o_blkcnt_uncmp, ROW_CMP => o_row_cmp, ROW_UNCMP => o_row_uncmp, CMP_RATIO => o_cmp_ratio, COMPTYPE_STR =>
