更新时间:2026-10-21 GMT+08:00
分享

DBE_COMPRESSION

接口介绍

根据输入的参数,评估指定数据对象的采样压缩率或者获取指定行数据的压缩类型。DBE_COMPRESSION支持的接口请参见表1。

表1 DBE_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

根据输入参数获取指定索引页的压缩类型。

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);
    • 对于跨页透明压缩表,一级分区表必须传入一级分区名称,二级分区表必须传入二级分区名称,否则会报错提示“no data found.”。对于高级压缩表,分区表必须传入分区名称(二级分区表也可传入一级分区名称),否则会报错提示“no data found.”。
    • 不支持在高级压缩表上评估跨页透明压缩的压缩率,直接使用会报错提示“The ilm turbo policy is not supported here.”。
    表2 DBE_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))
    表3 DBE_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);
    表4 DBE_COMPRESSION.GET_ACTUAL_COMPRESSION_RATIO接口参数说明

    参数

    描述

    OWNER_NAME

    数据对象所有者(所属模式)。

    OBJNAME

    数据对象名称。

    FILEPATH

    数据对象路径。

    IS_COMPRESS

    压缩类型。

    FILE_COUNT

    文件个数,包含数据文件和cmap文件。

    LOGIC_SIZE

    逻辑大小。

    PHYSIC_SIZE

    物理大小。

    COMPRESS_RATIO

    压缩比。

    小表场景下,压缩比可能出现小于1的现象,属于正常现象。

    小表场景下,压缩比可能出现小于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);
    表5 DBE_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);
    表6 DBE_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);
    表7 DBE_COMPRESSION.GET_INDEX_COMPRESSION_TYPE接口参数说明

    参数

    描述

    IDXOID

    索引oid。

    IDXTYPE

    索引类型,支持普通索引('i')、全局索引('I')、分区索引('x')。

    BUCKET_ID

    如果索引的bucket存储,传入对应的bucket id,默认为NULL。

    BLOCK_ID

    待查询的索引block id,如果输入是小数,会四舍五入取整。

相关文档