选择表存储模型
GaussDB(DWS)支持行列混合存储。当创建一个表时,可以选择表的存储格式为行存储或列存储。
行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。
上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。
GaussDB(DWS)表的行/列存储通过表定义的orientation属性定义。当指定orientation属性为row时,表为行存储;当指定orientation属性为column时,表为列存储;如果不指定,默认为行存储。行、列存储模型各有优劣,建议根据实际情况选择:
存储模型 |
优点 |
缺点 |
适用场景 |
---|---|---|---|
行存 |
数据按照行进行存储,在查询某一行数据时,可以快速定位到目标位置。 |
查询时即使只涉及某几列,所有数据也都会被读取。 |
|
列存 |
|
不适合少量数据INSERT或UPDATE操作。 |
|
创建一个行存表
例如,创建一个名为customer_t1的行存表:
1 2 3 4 5 6 |
CREATE TABLE customer_t1 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ); |
创建一个列存表
例如,创建一个名为customer_t2的列存表:
1 2 3 4 5 6 7 |
CREATE TABLE customer_t2 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ) WITH (ORIENTATION = COLUMN); |
使用压缩
表压缩可以在创建表时开启,压缩表能够使表中的数据以压缩格式存储,意味着占用相对少的内存。
对于I/O读写量大,CPU富足(计算相对小)的场景,选择高压缩比;反之选择低压缩比。建议依据此原则进行不同压缩下的测试和对比,以选择符合自身业务情况的最优压缩比。压缩比通过COMPRESSION参数指定,其支持的取值如下:
- 列存表为:YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。
- 行存表为:YES/NO,默认值为NO。(行存表压缩功能暂未商用,如需使用请联系技术支持工程师)
各压缩级别所适用的业务场景说明如下:
压缩级别 |
所适用的业务场景 |
---|---|
低级别压缩 |
系统CPU使用率高,存储磁盘空间充足。 |
中度压缩 |
系统CPU使用率适中,但存储磁盘空间不是特别充足。 |
高级别压缩 |
系统CPU使用率低,磁盘空间不充裕。 |
例如,创建一个名为customer_t3的列存压缩表:
1 2 3 4 5 6 7 |
CREATE TABLE customer_t3 ( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER ) WITH (ORIENTATION = COLUMN,COMPRESSION=middle); |