DBE_ILM
接口介绍
服务于ILM策略实施,实现ILM策略的评估以及压缩Job的停用接口。
接口名称 |
描述 |
---|---|
EXECUTE_ILM |
根据参数执行对指定的数据和ILM策略进行评估,评估通过则会生成对应的压缩Job。 |
STOP_ILM |
根据参数停止正在执行的压缩Job。 |
- DBE_ILM.EXECUTE_ILM
1 2 3 4 5 6 7
DBE_ILM.EXECUTE_ILM( OWNER IN VARCHAR2, OBJECT_NAME IN VARCHAR2, TASK_ID OUT NUMBER, SUBOBJECT_NAME IN VARCHAR2 DEFAULT NULL, POLICY_NAME IN VARCHAR2 DEFAULT 'ALL POLICIES', EXECUTION_MODE IN NUMBER DEFAULT 2);
表2 DBE_ILM.EXECUTE_ILM接口参数说明 参数
描述
OWNER
对象所属Schema。
OBJECT_NAME
对象名称。
TASK_ID
输出生成ADO task的描述符ID。
SUBOBJECT_NAME
数据子对象名称。
POLICY_NAME
策略名称,通过查询GS_ADM_ILMOBJECTS视图可知,默认DBE_ILM.ILM_ALL_POLICIES代表该对象上所有策略。DBE_ILM.ILM_ALL_POLICIES默认值为'ALL POLICIES',不支持小写。
EXECUTION_MODE
执行模式,本期不涉及在线模式(ILM_EXECUTION_ONLINE)或离线模式(ILM_EXECUTION_OFFLINE)。
- DBE_ILM.STOP_ILM
根据参数停止正在执行的ILM策略,原型为:
1 2 3 4
DBE_ILM.STOP_ILM( TASK_ID IN NUMBER DEFAULT -1, P_DROP_RUNNING_JOBS IN BOOLEAN DEFAULT FALSE, P_JOBNAME IN VARCHAR2 DEFAULT NULL)
表3 DBE_ILM.STOP_ILM接口参数说明 参数
描述
TASK_ID
指定待停止ADO task的描述符ID。
P_DROP_RUNNING_JOBS
是否停止正在执行中的任务,true为强制停止,false为不停止正在执行的任务。
P_JOBNAME
标识待停止的特定JobName,通过GS_MY_ILMEVALUATIONDETAILS视图可以查询。
当并发量较大时,执行DBE_ILM.STOP_ILM可能会提示资源繁忙,稍后重试即可。提示内容为“Resources are busy, please try again later”。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
gaussdb=# ALTER DATABASE set ilm = on; gaussdb=# CREATE Schema ILM_DATA; gaussdb=# SET current_schema=ILM_DATA; BEGIN DBE_ILM_ADMIN.DISABLE_ILM(); DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 15); DBE_ILM_ADMIN.CUSTOMIZE_ILM(2, 30); DBE_ILM_ADMIN.CUSTOMIZE_ILM(11, 1); DBE_ILM_ADMIN.CUSTOMIZE_ILM(12, 10); DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, 1024); DBE_ILM_ADMIN.CUSTOMIZE_ILM(14, 240); DBE_ILM_ADMIN.ENABLE_ILM(); END; / -- 1.1.2 prepare test data gaussdb=# CREATE SEQUENCE ILM_DATA.ORDER_TABLE_SE_ORDER_ID MINVALUE 1; gaussdb=# CREATE OR REPLACE PROCEDURE ILM_DATA.ORDER_TABLE_CREATE_DATA(NUM INTEGER) IS BEGIN FOR X IN 1..NUM LOOP INSERT INTO ORDER_TABLE VALUES(ORDER_TABLE_SE_ORDER_ID.nextval, '零食大礼包A', NOW()); END LOOP; COMMIT; END; / -- 1.1.3 normal procedure -- 1.1.3.1 evaluate successed - all policy gaussdb=# CREATE TABLE ILM_DATA.ORDER_TABLE (ORDER_ID INT, GOODS_NAME TEXT, CREATE_TIME TIMESTAMP) WITH (STORAGE_TYPE=ASTORE) ILM ADD POLICY ROW STORE COMPRESS ADVANCED ROW AFTER 1 DAYS OF NO MODIFICATION; BEGIN ILM_DATA.ORDER_TABLE_CREATE_DATA(5); PERFORM PG_SLEEP(2); END; / gaussdb=# SELECT ORDER_ID, DBE_COMPRESSION.GET_COMPRESSION_TYPE('ilm_data', 'order_table', ctid::text, NULL) FROM ILM_DATA.ORDER_TABLE; order_id | get_compression_type ----------+---------------------- 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 (5 rows) gaussdb=# SELECT ORDER_ID, DBE_HEAT_MAP.ROW_HEAT_MAP('ilm_data','order_table', NULL, ctid::text) FROM ILM_DATA.ORDER_TABLE; order_id | row_heat_map ----------+----------------------------------------------- 1 | (ilm_data,order_table,,,16799,16799,"(0,1)",) 2 | (ilm_data,order_table,,,16799,16799,"(0,2)",) 3 | (ilm_data,order_table,,,16799,16799,"(0,3)",) 4 | (ilm_data,order_table,,,16799,16799,"(0,4)",) 5 | (ilm_data,order_table,,,16799,16799,"(0,5)",) (5 rows) DECLARE v_taskid number; BEGIN DBE_ILM.EXECUTE_ILM(OWNER => 'ilm_data', OBJECT_NAME => 'order_table', TASK_ID => v_taskid, SUBOBJECT_NAME => NULL, POLICY_NAME => 'ALL POLICIES', EXECUTION_MODE => 2); RAISE INFO 'Task ID is:%', v_taskid; END; / INFO: Task ID is:1 gaussdb=# SELECT ORDER_ID, DBE_COMPRESSION.GET_COMPRESSION_TYPE('ilm_data', 'order_table', ctid::text, NULL) FROM ILM_DATA.ORDER_TABLE; order_id | get_compression_type ----------+---------------------- 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 (5 rows) gaussdb=# CALL DBE_ILM.STOP_ILM(-1, true, NULL); stop_ilm ---------- (1 row) |