更新时间:2024-11-12 GMT+08:00
分享

DBE_ILM

接口介绍

服务于ILM策略实施,实现ILM策略的评估以及压缩Job的停用接口。

表1 DBE_ILM

接口名称

描述

EXECUTE_ILM

根据参数执行对指定的数据和ILM策略进行评估,评估通过则会生成对应的压缩Job。

STOP_ILM

根据参数停止正在执行的压缩Job。

  • DBE_ILM.EXECUTE_ILM

    根据参数执行对于的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)

相关文档