如果数据库需要从硬盘中获得数据,那么数据的I/O操作是数据库的瓶颈。所以需要对数据进行压缩。数据压缩可以降低数据存储空间占用,通过合适的参数配置可很好的控制压缩比(影响 I/O 时间)和解压速度之间的关系,提高查询性能。
GBASE数据库的数据都是以压缩的形式存放在磁盘上,这样做主要有两个好处:减少存储空间占用;减少I/O提高整体性能。并且GBASE数据库按列存储,同列数据的特征相似使用压缩后会有更显著的压缩比,相应的性能提升也就更明显。
下面介绍下GBASE数据库的压缩方式:
1、压缩配置:配置方式包括全局配置参数(通过修改配置文件)以及DDL语法支持,用户可以在建表时候指定压缩方式。
a、全局压缩
通过配置文件配置, $GBASE_BASE/config/gbase_8a_gbase.cnf 修改如下参数
gbase_compress_method=<’method’>
gbase_compress_level=<level>
method:指定压缩算法。Nozip:没有压缩,HighZ:高压缩比,RapidZ:快速压缩。level指定压缩级别,0~9,1 压缩比最低,压缩/解压缩速度最快,9 反之
b、表级、列级压缩,建表时通过COMPRESS(<’method’>,<level>)指定
上述压缩方式优先级分别是列级>表级>全局级,也就是列级压缩覆盖表级压缩,表级压缩覆盖全局级压缩。
设置全局级数据压缩模式时所有数据节点的压缩参数应配置一致。
2、使用方法
a、全局压缩,修改配置文件即可,修改完需要重启服务生效。
b、表级压缩:
1) 创建表时指定压缩
语法格式 :CREATE TABLE .... COMPRESS (<’method’>,<level>);
示例:
gbase> CREATE TABLE t1 (a int, b varchar(10)) COMPRESS('rapidz',5);
Query OK, 0 rows affected (Elapsed: 00:00:00.12)
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
) COMPRESS('RapidZ', 5) ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
2) 修改表压缩属性
语法格式:ALTER TABLE.... ALTER COMPRESS (<’method’>,<level>);
示例:
gbase> ALTER TABLE t1 ALTER COMPRESS('newrapidz',0);
Query OK, 0 rows affected (Elapsed: 00:00:00.90)
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
) COMPRESS('NewRapidZ', 0) ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
c、列级压缩:
1)创建压缩列
语法格式:
CREATE TABLE column_definition COMPRESS (<’method’>,<level>)
示例:
gbase> CREATE TABLE t1 (a int DEFAULT NULL,b varchar(10)
COMPRESS('HighZ',0));
Query OK, 0 rows affected (Elapsed: 00:00:00.22)
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL COMPRESS('HighZ', 0)
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.01)
2)修改压缩列
语法格式 :ALTER TABLE... ALTER [column] column_name COMPRESS (<’method’>,<level>);
示例:
gbase> ALTER TABLE t1 ALTER a COMPRESS('rapidz',0);
Query OK, 0 rows affected (Elapsed: 00:00:00.31)
gbase> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL COMPRESS('RapidZ', 0) ,
"b" varchar(10) DEFAULT NULL COMPRESS('HighZ', 0)
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)




