DBE_COMPRESSION
接口介绍
根据输入的参数,评估指定数据对象的采样压缩率或者获取指定行数据的压缩类型。DBE_COMPRESSION支持的接口请参见表1。
| 接口名称 | 描述 |
|---|---|
| 根据输入参数评估指定数据对象的采样压缩率。 | |
| 根据输入参数获取指定行数据的压缩类型。 | |
| 根据输入参数评估指定数据对象的真实压缩率。 | |
| 根据输入参数评估指定跨页透明压缩数据对象的采样空洞率。 | |
| 输出turbo_compress_shared_buffers的使用情况。 | |
| 根据输入参数获取指定索引页的压缩类型。 |
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,如果输入是小数,会四舍五入取整。