1.列存储和行列混存
数据在磁盘中按照列的方式进行组织和物理存储。行存储架构和列存储架 构的数据库分别适用于不同的应用,具备各自的优劣势,如下图所示。列存储 架构对查询、统计和分析类操作具备天然的优势。
例如,在分析系统中对 100 列的业务表进行分析查询,对该业务表列的引 用一般不超过 10 个。对 I/O 是主要瓶颈的分析系统而言,相较于传统的行式数 据库,列式存储技术可以很容易地带来一个数量级的性能提升。 面对海量数据分析的 I/O 瓶颈,分析型数据库把表数据按列的方式存储, 其优势体现在以下几个方面。
1) 降低 I/O:只有访问查询所涉及的列产生 I/O,查询没有涉及的列不需 要访问,不产生 I/O;
2) 高压缩比:压缩比可以达到 1:2 ~ 1:20 以上;
3) 支持行列混存,降低 select *场景下的 I/O 量提升性能。
2.高效透明压缩
高效透明压缩技术能够按照数据类型和数据分布规律自动选择最优压缩算 法,尽可能减少数据所占的存储空间,降低 I/O 消耗,提升查询性能。支持库 级,表级,列级压缩选项,灵活平衡性能与压缩比的关系,而且压缩与解压缩 过程对用户是透明的。 从 I/O 资源消耗节约的角度来看,对 I/O 是主要瓶颈的分析系统而言, 相较于传统的行式数据库,高效透明压缩技术可以带来约一个数量级的性能提 升。
1) 压缩比可达到 1:2 至 1:20 甚至更优,远远高于行存储;
2) 节省 50%-95%的存储空间,大大降低数据处理能耗;
3) 内置数十种不同等级的压缩算法,根据数据特征自动选择最优压缩算 法;
4) 压缩态下对 I/O 要求大大降低,数据加载和查询性能明显提升。
3.智能索引
智能索引是一种粗粒度索引,包含数据统计信息。数据存储时每 65536 行 数据打成一个 Data Cell(简称 DC)包,每个数据包在数据入库时自动建立智能 索引,在数据查询时不需要解包就能得到统计值、进行数据过滤,可进一步降 低 I/O,对复杂查询的优化效果明显。如下图所示,左侧的“SmartIndex of Col 1”即在第一列数据上,以各数据包(DC)为单位建立的智能索引。
1)表中的所有列自动建立智能索引,不需用户手工建立和维护;
2)智能索引本身占空间少(1%左右),不会造成数据膨胀;
3)智能索引基于数据包建立,建立速度快,不受已存在数据包的影响。
与传统数据库索引技术相比,智能索引建立在数据包上(粗粒度索引), 并且每个字段均自动建有索引,而传统索引建立在每行数据上(细粒度索引), 因此访问智能索引要比访问传统索引需要更少的 I/O。同时,智能索引所占空 间大约是数据的百分之一,而传统数据库索引则要占到数据的 20~ 50%。