表结构设计 本章节主要介绍表结构设计的最佳实践。 在进行调优表实践之前,需要先了解下表结构设计相关的内容。因为进行数据库设计时,表设计上的一些关键项将严重影响后续整库的查询性能。表设计对数据存储也有影响:好的表设计能够减少I/O操作及最小化内存使用,进而提升查询性能。 本小节介绍如何设计DWS表结构(包括选择表存储方式、压缩级别、分布方式、分布列以及使用分区表和局部聚簇等),从而实现表性能的优化。 选择存储方式 表的存储模型选择是表定义的第一步。业务属性是表的存储模型的决定性因素,根据下表选择适合当前业务的存储模型。 一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。 存储模型 适用场景 行存 点查询(返回记录少,基于索引的简单查询)。 增删改比较多的场景。 列存 统计分析类查询(group , join多的场景)。 表的行/列存储通过表定义的orientation属性定义。当指定orientation属性为row时,表为行存储;当指定orientation属性为column时,表为列存储;如果不指定,默认为行存储。 使用表压缩 表压缩可以在创建表时开启,压缩表能够使表中的数据以压缩格式存储,意味着占用相对少的内存。 对于I/O读写量大,CPU富足(计算相对小)的场景,选择高压缩比;反之选择低压缩比。建议依据此原则进行不同压缩下的测试和对比,以选择符合自身业务情况的最优压缩比。压缩比通过COMPRESSION参数指定,其支持的取值如下: 列存表为:YES/NO/LOW/MIDDLE/HIGH,默认值为LOW。 行存表为:YES/NO,默认值为NO。(行存表压缩功能暂未商用,如需使用请联系技术支持工程师) 各压缩级别所适用的业务场景说明如下: 压缩级别 所适用的业务场景 低级别压缩 系统CPU使用率高,存储磁盘空间充足。 中度压缩 系统CPU使用率适中,但存储磁盘空间不是特别充足。 高级别压缩 系统CPU使用率低,磁盘空间不充裕。