全部产品
Search
文档中心

云原生数据库 PolarDB:列存索引(IMCI)发布说明

更新时间:Mar 13, 2024

PolarDB MySQL版重磅推出了列存索引(IMCI)特性。

简介

当前主要面向OLTP场景,广泛应用于在线业务,日常产生大量的数据。但是,基于行存的查询性能并不能满足所有应用场景的需求。通常情况下,为了实现复杂分析型查询,需要将数据从PolarDB MySQL版导出,然后导入到外部专用的OLAP系统中再进行分析查询。这样一来,需要使用两套数据库系统,架构复杂性、运维工作量和成本都会大大增加。

PolarDB MySQL版重磅推出的列存索引(In-Memory Column Index,简称IMCI)面向OLAP场景大数据量复杂查询。通过列存索引,PolarDB MySQL版实现了一体化的实时事务处理和实时数据分析的能力,成为一站式HTAP数据库产品解决方案。通过一套数据库系统,即可满足业务的OLTP及OLAP需求。

版本要求

  • 企业版集群,集群版本需满足以下条件之一:

    • PolarDB MySQL版8.0.1版本,且修订版本为8.0.1.1.22及以上。

    • PolarDB MySQL版8.0.2版本,且修订版本为8.0.2.2.12及以上。

实现形态

为了实现OLAP和OLTP的计算资源隔离,当前仅支持在只读节点上实现列存索引,即OLAP查询请求只发给只读节点,而不会发给主节点。至于OLAP查询请求是发给只读行存节点,还是只读列存节点,可根据行存/列存分流方案进行配置。

技术原理

列存索引特性在PolarDB MySQL版中的功能架构图如下:架构

从以上架构图可以看到,PolarDB MySQL版从存储引擎、执行算子、优化器三个层面设计了列存索引的特性:

  • 存储引擎:支持实时事务级别一致性的行列混合存储;

  • 执行算子:面向列存的向量化并行执行算子,支持极速的单表和多表查询;

  • SQL Parser/优化器:面向行列混合存储的CBO优化器,可以根据代价自动选择行存或者列存执行查询请求;

在此架构下,PolarDB MySQL版实现了100%兼容MySQL协议的基础上,同时获得数个数量级的查询加速效果。

核心优势

PolarDB MySQL版依托列存索引特性,具备如下优势:

  • 100%兼容MySQL:列存具有与MySQL一致的数据类型系统,支持灵活的类型转换,100%兼容MySQL协议;

  • 优秀的HTAP性能:PolarDB在OLTP方面本身具备良好性能。列存索引使其OLAP性能也与专用的OLAP数据库系统处于同一水平;

  • 行列混合存储,降低成本:同时支持行存储和列存储两种格式,且实时保证行列的事务级一致。列存更具有低成本的优势。

适用场景

PolarDB MySQL版的列存索引特性提供了一站式HTAP产品体验,可以应用于多种业务场景:

  • 对在线数据有实时数据分析需求的场景,如实时报表;

  • 专用数据仓库场景:依托PolarDB提供的海量数据存储能力,汇聚多个上游数据源,将其作为专用数据仓库使用;

  • ETL数据加速计算场景:依托PolarDB基于列存索引提供的强大而灵活的计算能力,在PolarDB中使用SQL来实现ETL功能。场景

性能提升情况

列存索引功能对SQL查询操作有明显的加速作用,查询性能甚至可以提升百倍。接下来我们以标准TPC-H测试的数据表和SQL为例,体验列存索引对查询的加速效果。

  • 测试方法:TPC-H是业界常用的一套基准,由TPC委员会制定发布,用于评测数据库的分析型查询能力。TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group by聚合等。

说明

本文的TPC-H的实现基于TPC-H的基准测试,并不能与已发布的TPC-H基准测试结果相比较,本文中的测试并不符合TPC-H基准测试的所有要求。

  • 数据量:100 GB。

  • 测试结果

    • 开启列存索引前后性能对比

      下图展示了开启列存索引前后分别执行TPC-H的22条查询语句的查询响应时间的对比。和自己比

    • 开启列存索引后与ClickHouse性能对比

      下图展示了开启列存索引后,执行TPC-H的21条查询语句(Q21除外,ClickHouse不支持)的查询响应时间,与相同数据量和数据结构的ClickHouse数据库的对比。和ck比

  • 结论

    • 列存索引对大多数的复杂查询操作都有加速作用,查询性能提升非常明显,甚至可达到百倍。

    • 与传统OLAP数据库ClickHouse相比:PolarDB MySQL版开启列存索引后,与ClickHouse性能相比各有优劣。其中在单表Scan/AGG、Join等场景中表现突出。未来的列存索引特性将在聚合加速、窗口函数等方面持续优化和突破。

相关文档