选择DWS表存储模型
DWS支持行列混合存储。当创建一个表时,可以选择表的存储格式为行存储或列存储。
行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。
上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。
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);  | 
       
    
      