原文链接:https://www.gbase.cn/community/post/4346
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
本文将详细介绍GBase 8s的数据压缩功能,包括压缩的作用、方式、命令以及限制。在存储空间有限、需要减少数据占用空间、提高数据处理效率的情况下会用到GBase 8s数据压缩;同时推荐对不常更新的数据表、分片进行压缩。为存储空间节省和I/O效率提升提供了有效解决方案。
一、数据压缩作用
1、节省存储空间和相应成本
2、提高I/O效率
1)数据库在读取数据的时候是读取压缩后的数据
2)减少I/O节省下来的时间 > 在内存中解压缩数据所需的时间
3、提高读操作性能
4、写操作性能可能会略有下降
二、数据压缩方式
1、新表自动压缩
1)自动压缩:
CREATE TABLE cust5 ( ...) COMPRESSED
a. 自动生成数据字典
b. 自动压缩数据
light append方式
light append方式可以绕过缓冲池,进行更加快速的数据加载。
同时满足以下两个条件时会自动启用:
1.row table
2.no index
2、取消自动压缩:
task/admin(table uncompress)
3、重新压缩:
tash/admin(table compress)
4、.控制解压分片:
task/admin(fragment compress/uncompress)
二、已经存在表压缩
1、开启数据压缩
EXECUTE FUNCTION TASK('enable compression');
2、生成数据字典压缩
execute function task('table create_dctionary', 'stdtab', 'test',‘gbasedbt');
3、整合数据空间,将未被使用的空间整合到表或分片的尾部;
execute function task('table compress repack', 'stdtab', 'test',‘gbasedbt');
4、将数据表或分片未被使用的空间还给数据库空间;
execute function task('table shrink', 'stdtab', 'test',‘gbasedbt');
execute function task('fragment shrink', ‘partn');
三、检验数据压缩命令
1、onstat -g ppd:执行数据压缩后,可以查看数据字典
例:execute function task('table create_dictionary', ‘table', ‘db',‘gbasedbt');
onstat -g ppd
partnum ColOffset DbsNum CrTS CrLogID CrLogPos DrTS DrLogID DrLogPos
0x1001d5 -1 1 1393371661 4 16339024 0 0 0
0x1001d5 4 1 1393371661 4 16355408 0 0 0
partnum:应用到压缩字典的分区号
ColOffset:一个压缩分区的BLOB列的字节偏移量,-1仅行被压缩。
DbsNum:驻留在字典中数据库空间数量
CrTS:数据字典生成的时间搓
CrLogID:当数据字典生成的时候产生的逻辑日志的唯一ID;
CrLogPos:创建数据字典时逻辑日志的位置
DrTS:数据字典被清楚的时间搓
DrLogID:数据字典被清除时产生的逻辑日志Unique ID
DrLogPos:数据字典被清楚时逻辑日志的位置
2、评估压缩比例
execute function task("table estimate_compression", "tablename", "dbname", "owner_name");
est curr change partnum coloff table
----- ----- ------ ------------- -----------------------------
75.7% 75.3% +0.4 0x00200003 -1 insurance:bwilson.auto
75.7% 0.0% +75.7 0x00300002 -1 insurance:pchang.home
est :已经存在压缩比;
curr:目前压缩比
change:目前压缩与之间的压缩变化
partnum:分片num
coloff:评估在数据空间的数据是行数据还是blobs数据;
table:表名,database:owner.tablename
3、打印正在执行的压缩操作命令
onstat –g dsk
Processed Remaining Duration
Partnum OP Pass Rows Blobs Rows Time(s) Table Name
400002 Repack 1 6325 1752 1497 00:00:00 db:sl:t1
partnum:分片NUM
OP:压缩操作, 例如compress(压缩), repack(对数据库中的表进行重新打包), or shrink(释放未使用的磁盘空间)
Pass:进队repack操作(对数据库中的表进行优化处理)有效, 1 指读行pass, 2 指第二次pass
Processed Rows:压缩操作行数
Blobs:操作blobs数量
Remaining Rows:没有压缩的行数.
Duration Time(s):操作持续的时间,以秒为单位
Table Name: 表名
四、数据压缩的限制
以下情况不能被压缩:
- 不以行(rows)进行存储的数据(blobs)
- 索引
- 临时表
- catalog表
- 系统库中的表
南大通用GBase 8s的数据压缩技术是数据库管理员和开发人员进行存储优化和性能提升的重要工具。通过本文的详细介绍,我们希望能够帮助您更有效地利用GBase 8s的压缩功能,感谢您的阅读。
原文链接:https://www.gbase.cn/community/post/4346
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。