
# DBE_COMPRESSION
#### 接口介绍
根据输入的参数，评估指定数据对象的采样压缩率或者获取指定行数据的压缩类型。
表1DBE_COMPRESSION 
| 接口名称                  | 描述                    |
|:---|:---|
| GET_COMPRESSION_RATIO | 根据输入参数评估指定数据对象的采样压缩率。 |
| GET_COMPRESSION_TYPE  | 根据输入参数获取指定行数据的压缩类型。   |
   
- DBE_COMPRESSION.GET_COMPRESSION_RATIO 根据输入参数评估指定数据对象的采样压缩率，原型为：
  ```
  DBE_COMPRESSION.GET_COMPRESSION_RATIO(
  SCRATCHTBSNAME IN VARCHAR2,
  OWNNAME        IN VARCHAR2,
  OBJNAME        IN VARCHAR2,
  SUBOBJNAME     IN VARCHAR2,
  COMPTYPE       IN NUMBER,
  BLKCNT_CMP     OUT INTEGER,
  BLKCNT_UNCMP   OUT INTEGER,
  ROW_CMP        OUT INTEGER,
  ROW_UNCMP      OUT INTEGER,
  CMP_RATIO      OUT NUMBER,
  COMPTYPE_STR   OUT VARCHAR2,
  SAMPLE_RATIO   IN NUMBER DEFAULT 20,
  OBJTYPE        IN INTEGER DEFAULT 1);
  ```
  表2DBE_COMPRESSION.GET_COMPRESSION_RATIO接口参数说明 
  | 参数             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|
  | SCRATCHTBSNAME | 数据对象所属表空间。                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | OWNNAME        | 数据对象所有者（所属模式）。                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | OBJNAME        | 数据对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | SUBOBJNAME     | 数据子对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | COMPTYPE       | 压缩类型，支持： - 1：未压缩  - 2：高级压缩   |
  | BLKCNT_CMP     | 样本被压缩后占用的块数。                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | BLKCNT_UNCMP   | 样本未压缩占用的块数。                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | ROW_CMP        | 样本被压缩后单个块内可容纳的行数。                                                                                                                                                                                                                                                                                                                                                                                                              |
  | ROW_UNCMP      | 样本未被压缩时单个数据块可容纳的行数。                                                                                                                                                                                                                                                                                                                                                                                                            |
  | CMP_RATIO      | 压缩比，BLKCNT_UNCMP除以BLKCNT_CMP。                                                                                                                                                                                                                                                                                                                                                                                                  |
  | COMPTYPE_STR   | 描述压缩类型的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | SAMPLE_RATIO   | 采样比例，输入为0-100的整数或浮点数，对应为百分之n的采样比例。默认为20，即对20%的行数进行采样。                                                                                                                                                                                                                                                                                                                                                                          |
  | OBJTYPE        | 对象类型，支持： - 1：表对象                                                                                                                                                                        |
     
  
- DBE_COMPRESSION.GET_COMPRESSION_TYPE 根据输入参数获取指定行数据的压缩类型，该接口属于运维类接口，不做可见性判断，即传入的ctid为已删除的行时，该接口依然会返回当前行在页面上最新的状态。原型为：
  ```
  DBE_COMPRESSION.GET_COMPRESSION_TYPE(
  OWNNAME    IN VARCHAR2,
  TABNAME    IN VARCHAR2,
  CTID       IN TEXT,
  SUBOBJNAME IN VARCHAR2 DEFAULT NULL);
  ```
  表3DBE_COMPRESSION.GET_COMPRESSION_TYPE接口参数说明 
  | 参数         | 描述             |
  |:---|:---|
  | OWNNAME    | 数据对象所有者（所属模式）。 |
  | TABNAME    | 数据对象名称。        |
  | CTID       | 目标行ctid。       |
  | SUBOBJNAME | 数据子对象名称。       |
     
  
 
#### 示例
```
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());
gaussdb=# SELECT DBE_COMPRESSION.GET_COMPRESSION_TYPE('user1', 'test_data', '(0,1)', NULL);
 get_compression_type 
----------------------
                    1
(1 row)
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    =>  o_comptype_str,
    SAMPLE_RATIO    =>  100,
    OBJTYPE         =>  1);
RAISE INFO 'Number of blocks used by the compressed sample of the object    : %', o_blkcnt_cmp;
RAISE INFO 'Number of blocks used by the uncompressed sample of the object    : %', o_blkcnt_uncmp;
RAISE INFO 'Number of rows in a block in compressed sample of the object    : %', o_row_cmp;
RAISE INFO 'Number of rows in a block in uncompressed sample of the object    : %', o_row_uncmp;
RAISE INFO 'Estimated Compression Ratio of Sample                           : %', o_cmp_ratio;
RAISE INFO 'Compression Type                        : %', o_comptype_str;
end;
/
INFO:  Number of blocks used by the compressed sample of the object    : 1
INFO:  Number of blocks used by the uncompressed sample of the object    : 1
INFO:  Number of rows in a block in compressed sample of the object    : 1
INFO:  Number of rows in a block in uncompressed sample of the object    : 1
INFO:  Estimated Compression Ratio of Sample                           : 1.0
INFO:  Compression Type                        : Compress Advanced
```
