# DBE_ILM_ADMIN
#### 接口介绍
服务于ILM策略实施，实现ADO的后台调度以及各个限流参数的控制。DBE_ILM_ADMIN支持的接口请参见[表1]。
 表1DBE_ILM_ADMIN 
| 接口名称                                                                                   | 描述                 |
|:---|:---|
| [DBE_ILM_ADMIN.CUSTOMIZE_ILM]             | 根据输入参数定制ILM策略属性。 |
| [DBE_ILM_ADMIN.DISABLE_ILM]        | 关闭后台调度。            |
| [DBE_ILM_ADMIN.ENABLE_ILM]             | 开启后台调度。           |
| [DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY] | 创建库级压缩策略。          |
| [DBE_ILM_ADMIN.DELETE_ILM_DB_POLICY] | 删除库级压缩策略。         |
   
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
当并发量较大时，执行DBE_ILM_ADMIN.DISABLE_ILM或DBE_ILM_ADMIN.ENABLE_ILM可能会提示资源繁忙，稍后重试即可。提示内容为"Resources are busy, please try again later."。
- DBE_ILM_ADMIN.CUSTOMIZE_ILM
  根据输入参数定制ILM策略属性。
  DBE_ILM_ADMIN.CUSTOMIZE_ILM原型为：
  ```
  DBE_ILM_ADMIN.CUSTOMIZE_ILM(
  PARAM    IN    NUMBER, 
  VAL      IN    NUMBER);
  ```
  表2DBE_ILM_ADMIN.CUSTOMIZE_ILM接口参数说明 
  | 参数 | 描述    |
  |:---|:---|
  | PARAM                                        | 参数序号。 |
  | VAL                                          | 参数取值。                                           |
     
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  由于兼容性影响，在MYSQL或M-Compatibility兼容模式下，若调用DBE_ILM_ADMIN.CUSTOMIZE_ILM()时传入的VAL值为非数字的字符，例如DBE_ILM_ADMIN.CUSTOMIZE_ILM(13, '\*')，会默认将传入的VAL值赋值为0。
  表3DBE_ILM_ADMIN.CUSTOMIZE_ILM接口参数范围 
  | 参数序号 | 参数值                               | 描述                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|:---|
  | 1       | EXECUTION_INTERVAL               | ADO Task的执行频率，单位分钟，默认值15。取值范围为大于等于1小于等于2147483647的整数或浮点数，作用时向下取整。                                                                                                                                                                                                                                                                    |
  | 2      | RETENTION_TIME                  | ADO相关历史的保留时长，单位天，默认值30。取值范围为大于等于1小于等于2147483647的整数或浮点数，作用时向下取整。                                                                                                                                                                                                                                                                     |
  | 7        | ENABLE                            | 后台调度的状态。该参数不支持使用DBE_ILM_ADMIN.CUSTOMIZE_ILM修改，应使用DBE_ILM_ADMIN.DISABLE_ILM和DBE_ILM_ADMIN.ENABLE_ILM修改。                                                                                                                                                                                                                               |
  | 11     | POLICY_TIME                       | 控制ADO的条件单位是天或者秒，秒仅用来做测试用。取值为： - 0：ILM_POLICY_IN_DAYS（默认值）。  - 1：ILM_POLICY_IN_SECONDS。   |
  | 12    | ABS_JOBLIMIT                     | 控制一次ADO Task最多生成ADO Job的数量。取值范围为大于等于0小于等于2147483647的整数或浮点数，作用时向下取整。                                                                                                                                                                                                                                                                   |
  | 13      | JOB_SIZELIMIT                     | 控制单个ADO Job可以处理的最大字节数，单位兆。取值范围为大于等于0小于等于2147483647的整数或浮点数，作用时向下取整。当JOB_SIZELIMIT为0时，手动执行压缩任务会报warning且不做压缩处理，自动调度后台任务也不做压缩处理。                                                                                                                                                                                                      |
  | 14       | WIND_DURATION                      | 维护窗口持续时长，单位分钟，默认值240（4小时）。取值范围为大于等于0小于1440（24小时）的整数。                                                                                                                                                                                                                                                                                 |
  | 15     | BLOCK_LIMITS                     | 控制实例级的行存压缩速率上限，默认值40，单位是block/ms（表示每毫秒最多压缩多少个block）。取值范围是0到10000（0表示不限制）。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                              |
  | 16       | ENABLE_META_COMPRESSION           | 是否开启header压缩，默认值0。取值范围为0（关闭）和1（开启）。跨页透明压缩不支持此参数。 说明： 设置此参数为1时，对于单行数据较短的表，压缩率会有一定提升，但是访问压缩行的性能会有较大幅度的下降。若数据库多是单行数据较长的表，不建议开启此参数。                                                                                                                                                         |
  | 17    | SAMPLE_MIN                      | 常量编码和等值编码采样步长最小值，默认值10。取值范围\[1, 100\]，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                                |
  | 18     | SAMPLE_MAX                       | 常量编码和等值编码采样步长最大值，默认值10。取值范围\[1, 100\]，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                               |
  | 19   | CONST_PRIO                       | 常量编码优先级，默认值40。取值范围\[0, 100\]，100表示关闭常量编码，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                                |
  | 20   | CONST_THRESHOLD                   | 常量编码阈值，默认值90。取值范围\[1, 100\]，表示一列常量值的占比超过该阈值时进行常量编码，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                   |
  | 21      | EQVALUE_PRIO                      | 等值编码优先级，默认值60。取值范围\[0, 100\]，100表示关闭等值编码，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                              |
  | 22   | EQVALUE_THRESHOLD                | 等值编码阈值，默认值80。取值范围\[1, 100\]，表示两列数据的等值比例超过该阈值时进行等值编码，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                |
  | 23    | ENABLE_DELTA_ENCODE_SWITCH        | 差值编码开关，默认值1。取值范围\[0, 1\]，0表示关闭，1表示开启，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                                  |
  | 24     | LZ4_COMPRESSION_LEVEL             | lz4压缩等级，默认值0。取值范围\[0, 16\]，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                                            |
  | 25   | ENABLE_LZ4_PARTIAL_DECOMPRESSION | 部分解压开关，默认值1。取值范围\[0, 1\]，0表示关闭，1表示开启，支持小数输入，小数会自动向下取整。跨页透明压缩不支持此参数。                                                                                                                                                                                                                                                                |
  | 26     | INDEXJOB_SIZELIMIT              | 控制索引压缩时单个ADO Job可以处理的最大字节数，单位兆，默认为1024。取值范围为大于等于0小于等于2147483647的整数或浮点数，作用时向下取整。当INDEXJOB_SIZELIMIT为0时，手动执行压缩任务会报warning且不做压缩处理，自动调度后台任务也不做压缩处理。                                                                                                                                                                                   |
  | 27     | ENABLE_INDEX_COMPRESS           | 索引压缩使能开关，0表示关闭，1表示打开，默认为0。                                                                                                                                                                                                                                                                                                          |
     
  示例：
  ```
  gaussdb=# CALL DBE_ILM_ADMIN.CUSTOMIZE_ILM(1, 15);
   customize_ilm 
  ---------------
  (1 row)
  gaussdb=# SELECT * FROM gs_adm_ilmparameters;
                 name               | value 
  ----------------------------------+-------
   EXECUTION_INTERVAL               |    15
   RETENTION_TIME                   |    30
   ENABLED                          |     1
   POLICY_TIME                      |     0
   ABS_JOBLIMIT                     |    10
   JOB_SIZELIMIT                    |  1024
   WIND_DURATION                    |   240
   BLOCK_LIMITS                     |    40
   ENABLE_META_COMPRESSION          |     0
   SAMPLE_MIN                       |    10
   SAMPLE_MAX                       |    10
   CONST_PRIO                       |    40
   CONST_THRESHOLD                  |    90
   EQVALUE_PRIO                     |    60
   EQVALUE_THRESHOLD                |    80
   ENABLE_DELTA_ENCODE_SWITCH       |     1
   LZ4_COMPRESSION_LEVEL            |     0
   ENABLE_LZ4_PARTIAL_DECOMPRESSION |     1
   INDEXJOB_SIZELIMIT               |  1024
   ENABLE_INDEX_COMPRESS            |     0 
  (20 rows)
  ```
  
- DBE_ILM_ADMIN.DISABLE_ILM
  关闭后台调度。
  DBE_ILM_ADMIN.DISABLE_ILM原型为：
  ```
  CALL DBE_ILM_ADMIN.DISABLE_ILM();
  ```
  
- DBE_ILM_ADMIN.ENABLE_ILM
  开启后台调度。
  DBE_ILM_ADMIN.ENABLE_ILM原型为：
  ```
  CALL DBE_ILM_ADMIN.ENABLE_ILM();
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  后台调度生效需要先在数据库运维平台将GUC参数enable_ilm设置为on。
  
- DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY
  基于输入参数创建库级压缩策略，该策略将执行以下操作：
  - 自动覆盖存量表：为当前数据库中所有未绑定压缩策略的用户表附加此策略。
  
  - 新表默认继承：后续新建表若未显式声明压缩策略，将自动继承该库级策略定义。
   
  DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY原型为：
  ```
  DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY(
  DAYS IN INT,
  COMPRESSION_LEVEL IN TEXT DEFAULT 'MEDIUM');
  ```
  表4DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY接口参数说明 
  | 参数                 | 描述                                        |
  |:---|:---|
  | DAYS             | 压缩策略天数。                                   |
  | COMPRESSION_LEVEL | 压缩策略级别。仅支持'HIGH' 和 'MEDIUM'，默认值为 'MEDIUM'。 |
     
  
- DBE_ILM_ADMIN.DELETE_ILM_DB_POLICY
  删除库级压缩策略及所有表上继承于库级压缩策略的压缩策略。
  
 
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 库级压缩策略仅支持高级压缩。
- 库级策略不支持表达式功能。
- 在使用gs_dump导出库级策略定义时，需满足以下条件方可生效：必须执行全库导出操作且用户具备系统管理员权限。若上述条件未同时满足，则相关策略将以表、分区或子分区级别的独立策略形式导出，而非作为库级策略处理。
- 多个不同事务内若调用DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY、DBE_ILM_ADMIN.DELETE_ILM_DB_POLICY、DBE_ILM.EXECUTE_ILM等接口并发执行，先执行的事务若一直不提交，后执行的事务可能存在锁超时风险。
 
库级策略示例：
- 创建一个策略时间为10天压缩策略:
  ```
  gaussdb=# CALL DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY(10);
   create_ilm_db_policy 
  ----------------------
  (1 row)
  ```
  
- 删除库级策略
  ```
  gaussdb=# CALL DBE_ILM_ADMIN.DELETE_ILM_DB_POLICY();
   delete_ilm_db_policy 
  ----------------------
  (1 row)
  ```
  
- 创建一个策略时间为10天的high级别压缩策略:
  ```
  gaussdb=# CALL DBE_ILM_ADMIN.CREATE_ILM_DB_POLICY(10, 'high');
   create_ilm_db_policy 
  ----------------------
  (1 row)
  ```
  
 
