# DBE_COMPRESSION
#### 接口介绍
根据输入的参数，评估指定数据对象的采样压缩率或者获取指定行数据的压缩类型。DBE_COMPRESSION支持的接口请参见[表1]。
 表1DBE_COMPRESSION 
| 接口名称                                                                                           | 描述                                     |
|:---|:---|
| [DBE_COMPRESSION.GET_COMPRESSION_RATIO]        | 根据输入参数评估指定数据对象的采样压缩率。                |
| [DBE_COMPRESSION.GET_COMPRESSION_TYPE]          | 根据输入参数获取指定行数据的压缩类型。                     |
| [DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO] | 根据输入参数评估指定数据对象的真实压缩率。                  |
| [DBE_COMPRESSION.GET_HOLE_RATIO]                | 根据输入参数评估指定跨页透明压缩数据对象的采样空洞率。              |
| [DBE_COMPRESSION.TURBO_COMPRESS_BUFFER_STATS]  | 输出turbo_compress_shared_buffers的使用情况。 |
| [DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE]   | 根据输入参数获取指定索引页的压缩类型。                  |
   
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
GET_COMPRESSION_TYPE接口只支持分布式数据库中数据节点（DN），其他节点暂不支持。
- DBE_COMPRESSION.GET_COMPRESSION_RATIO
  根据输入参数评估指定数据对象的采样压缩率。
  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);
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - 对于跨页透明压缩表，一级分区表必须传入一级分区名称，二级分区表必须传入二级分区名称，否则会报错提示"no data found."。对于高级压缩表，分区表必须传入分区名称（二级分区表也可传入一级分区名称），否则会报错提示"no data found."。
  
  - 不支持在高级压缩表上评估跨页透明压缩的压缩率，直接使用会报错提示"The ilm turbo policy is not supported here."。
   
  表2DBE_COMPRESSION.GET_COMPRESSION_RATIO接口参数说明 
  | 参数 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  |:---|:---|
  | SCRATCHTBSNAME                               | 数据对象所属表空间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | OWNNAME                                      | 数据对象所有者（所属模式）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | OBJNAME                                        | 数据对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | SUBOBJNAME                                   | 数据子对象名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | COMPTYPE                                    | 压缩类型，支持： - 1：未压缩。  - 2：高级压缩。  - 3：跨页透明压缩low。  - 4：跨页透明压缩medium。  - 5：跨页透明压缩high。  - 6：高级压缩high。   |
  | BLKCNT_CMP                                    | 样本被压缩后占用的块数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | BLKCNT_UNCMP                                | 样本未压缩占用的块数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | ROW_CMP                                     | 样本被压缩后单个块内可容纳的行数，跨页透明压缩显示为0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | ROW_UNCMP                                      | 样本未被压缩时单个数据块可容纳的行数，跨页透明压缩显示为0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | CMP_RATIO                                   | 压缩比，blkcnt_uncmp除以blkcnt_cmp。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | COMPTYPE_STR                                   | 描述压缩类型的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | SAMPLE_RATIO                                | 采样比例，输入为0-100的整数或浮点数，对应为百分之N的采样比例。默认为20，即对20%的行数进行采样。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  | OBJTYPE                                        | 对象类型，支持： - 1：表对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     
  

- DBE_COMPRESSION.GET_COMPRESSION_TYPE
  根据输入参数获取指定行数据的压缩状态（返回1表示未压缩，2表示压缩），该接口属于运维类接口，不做可见性判断，即传入的ctid为已删除的行时，该接口依然会返回当前行在页面上最新的状态。跨页透明压缩不支持此高级包，默认返回1，无实际意义。
  DBE_COMPRESSION.GET_COMPRESSION_TYPE原型为：
  ```
  DBE_COMPRESSION.GET_COMPRESSION_TYPE(
  OWNNAME    IN VARCHAR2,
  TABNAME    IN VARCHAR2,
  CTID       IN TEXT,
  SUBOBJNAME IN VARCHAR2 DEFAULT NULL,
  BUCKETID   IN pg_catalog.int2 DEFAULT NULL))
  ```
  表3DBE_COMPRESSION.GET_COMPRESSION_TYPE接口参数说明 
  | 参数        | 描述                |
  |:---|:---|
  | OWNNAME    | 数据对象所有者（所属模式）。    |
  | TABNAME  | 数据对象名称。         |
  | CTID       | 目标行ctid。        |
  | SUBOBJNAME | 数据子对象名称。       |
  | BUCKETID     | 目标行tablebucketid。 |
     
  

- DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO
  根据输入参数评估指定数据对象的真实压缩率，仅支持跨页透明压缩表。
  DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO原型为：
  ```
  DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO(
  OWNER_NAME       IN VARCHAR2,
  OBJNAME          IN VARCHAR2,
  FILEPATH         OUT VARCHAR2,
  IS_COMPRESS      OUT BOOL,
  FILE_COUNT       OUT INTEGER,
  LOGIC_SIZE       OUT BIGINT,
  PHYSIC_SIZE      OUT BIGINT,
  COMPRESS_RATIO   OUT VARCHAR2);
  ```
  表4DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO接口参数说明 
  | 参数            | 描述                                                                               |
  |:---|:---|
  | OWNER_NAME    | 数据对象所有者（所属模式）。                                                                   |
  | OBJNAME        | 数据对象名称。                                                                          |
  | FILEPATH      | 数据对象路径。                                                                          |
  | IS_COMPRESS  | 压缩类型。                                                                            |
  | FILE_COUNT    | 文件个数，包含数据文件和cmap文件。                                                              |
  | LOGIC_SIZE     | 逻辑大小。                                                                             |
  | PHYSIC_SIZE   | 物理大小。                                                                             |
  | COMPRESS_RATIO | 压缩比。 小表场景下，压缩比可能出现小于1的现象，属于正常现象。 |
     
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  小表场景下，压缩比可能出现小于1的现象，属于正常现象。
  示例：建表table_test，插入一条数据，使用高级包进行查询，压缩比显示小于1。
  ```
  gaussdb=# CREATE TABLE table_test(a int) ILM ADD POLICY ROW STORE COMPRESS TURBO HIGH UNIT AFTER 1 days OF NO MODIFICATION;
  gaussdb=# INSERT INTO table_test VALUES(1);
  gaussdb=# CALL DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO('public', 'table_test', NULL,NULL,NULL,NULL,NULL,NULL);
  ```
  
- DBE_COMPRESSION.GET_HOLE_RATIO
  根据输入参数评估指定跨页透明压缩数据对象的采样空洞率，仅支持跨页透明压缩表。
  DBE_COMPRESSION.GET_HOLE_RATIO原型为：
  ```
  DBE_COMPRESSION.GET_HOLE_RATIO(
  OWNER_NAME       IN VARCHAR2,
  OBJNAME          IN VARCHAR2,
  FILE_COUNT       OUT INTEGER,
  PHYSIC_SIZE      OUT BIGINT,
  HOLE_SIZE        OUT BIGINT,
  HOLE_RATIO       OUT VARCHAR2,
  SAMPLE_RATIO     IN NUMBER DEFAULT 20);
  ```
  表5DBE_COMPRESSION.GET_HOLE_RATIO接口参数说明 
  | 参数              | 描述                 |
  |:---|:---|
  | OWNER_NAME      | 数据对象所有者（所属模式）。     |
  | OBJNAME         | 数据对象名称。           |
  | FILE_COUNT     | 数据对象的文件个数，只包含数据文件 |
  | PHYSIC_SIZE       | 物理大小。              |
  | HOLE_SIZE     | 空洞大小            |
  | HOLE_RATIO    | 空洞率              |
  | SAMPLE_RATIO | 采样率。             |
     
  
- DBE_COMPRESSION.TURBO_COMPRESS_BUFFER_STATS
  输出turbo_compress_shared_buffers的使用情况。
  DBE_COMPRESSION.TURBO_COMPRESS_BUFFER_STATS原型为：
  ```
  DBE_COMPRESSION.TURBO_COMPRESS_BUFFER_STATS(
  CAPACITY        OUT BIGINT,
  MAIN_LEN        OUT BIGINT,
  FREE_LEN        OUT BIGINT,
  BUFFER_ACCESS   OUT BIGINT,
  BUFFER_NOREADS  OUT BIGINT,
  DISK_READS      OUT BIGINT,
  RECYCLE_TIMES   OUT BIGINT,
  RECYCLE_STEP    OUT BIGINT,
  RECYCLE_WAITS   OUT BIGINT,
  HIT_RATIO       OUT VARCHAR2);
  ```
  表6DBE_COMPRESSION.TURBO_COMPRESS_BUFFER_STATS接口参数说明 
  | 参数             | 描述                               |
  |:---|:---|
  | CAPACITY       | turbo_compress_shared_buffers的容量。 |
  | MAIN_LEN       | lrulist中main_list的长度。           |
  | FREE_LEN       | lrulist中free_list的长度。           |
  | BUFFER_ACCESS   | 逻辑读的次数。                          |
  | BUFFER_NOREADS | 新扩展出来的block个数。                 |
  | DISK_READS   | 物理读的次数。                        |
  | RECYCLE_TIMES | 回收次数。                          |
  | RECYCLE_STEP   | 回收步长。                             |
  | RECYCLE_WAITS   | alloc buf ctrl时的等待次数。          |
  | HIT_RATIO     | 在内存中的命中率。                      |
     
  
 
- DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE
  查询索引页面是否已经被压缩。此高级包仅能查询到高级压缩的状态，查询不到跨页透明压缩的状态。
  DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE原型为：
  ```
  DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE(
  IDXOID          IN OID,
  IDXTYPE         IN TEXT,
  BUCKET_ID       IN INT2 DEFAULT NULL,
  BLOCK_ID        IN INT8);
  ```
  表7DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE接口参数说明 
  | 参数      | 描述                                     |
  |:---|:---|
  | IDXOID  | 索引oid。                                |
  | IDXTYPE  | 索引类型，支持普通索引（'i'）、全局索引（'I'）、分区索引（'x'）。  |
  | BUCKET_ID | 如果索引的bucket存储，传入对应的bucket id，默认为NULL。 |
  | BLOCK_ID | 待查询的索引block id，如果输入是小数，会四舍五入取整。      |
     
  
 
