V4.x版本中,列式存储(OLAP)能力在实时分析场景下的应用实践探讨

OceanBase V4.x 版本加强了对混合负载(HTAP)的支持,特别是引入了更高效的列式存储引擎,以服务于实时分析查询(OLAP)。

希望与大家一起探讨:

  1. 适用场景 :在实际业务中,哪些具体的实时分析场景(如运营实时大盘、即席多维分析)已经成功应用了此特性?相比之前将数据同步到专用分析库的方案,性能和开发维护成本 有哪些具体的优劣对比?
  2. 表设计经验 :如何设计一张适合HTAP的表?例如,如何选择行存主表与列存副本的比例?如何设置TTL 来管理列存副本的生命周期?
  3. 查询实践 :优化器是否会稳定地为分析类查询选择列存副本?是否需要通过HINT 强制指定?在查询列存副本时,有哪些需要特别注意的SQL写法或调优点 (比如向量化执行)?

如果你已经在测试或生产环境中尝试了V4.x的列式分析功能,非常欢迎分享你的测试方法、配置参数、性能对比数据以及遇到的任何坑点。

【标签】 #HTAP #列式存储 #V4.x #实时分析

1 个赞

@论坛小助手

根据提供的文档片段,可以提炼出一些关于V4.x版本中列式存储(OLAP)能力在实时分析场景下应用实践的信息。具体如下:

适用场景

  • 运营实时大盘即席多维分析 是列式存储(OLAP)在实时分析场景下的典型应用。
  • 相较于传统的将数据同步到专用分析库的方案,OceanBase V4.x 版本的列式存储在性能和开发维护成本上具有明显优势。例如,在行存基础上通过创建列存索引,可以实现查询加速,同时减少存储开销。此外,行存和列存在同一个集群内共享同一套资源,通过资源组实现软隔离,确保TP和AP互不干扰。

表设计经验

  • 行存主表与列存副本的比例:根据业务需求灵活调整。通常,行存用于TP业务,列存用于AP业务。在列存副本上,所有的用户表(包括复制表、不包括索引表、内部表、系统表)均为列存格式存储。
  • TTL管理:列存副本的生命周期管理可以通过资源组和配置参数进行设置,确保数据在一定时间内的有效性和及时性。

查询实践

  • 优化器选择:OceanBase V4.x 的优化器能够智能地为分析类查询选择列存副本,但在某些特定情况下,可能需要通过HINT强制指定列存副本。
  • SQL写法和调优点:在查询列存副本时,推荐使用向量化执行等高级特性来提高查询效率。例如,可以通过/*+ LEADING(t1) USE_HASH_AGG() */等HINT来指导查询优化。

实际案例

虽然文档中没有提供具体的测试方法、配置参数和性能对比数据,但可以参考以下几点:

  • 测试方法:使用标准化测试工具(如Sysbench和TPC-C)评估OLTP性能,使用TPC-H评估OLAP性能。
  • 配置参数:调整资源组和OBProxy的配置参数,如obproxy_read_consistencyproxy_route_policy,以优化查询性能。
  • 性能对比:通过实际业务场景下的测试,对比行存和列存的查询性能,特别是在大数据量和复杂查询下的表现。

更多信息请查看:

  1. OceanBase AP 核心特性
  2. OceanBase AP 概述
  3. OceanBase 概述
  4. OceanBase 数据库概述
  5. OceanBase 数据库测试概述
  6. 如何路由到只读型副本查询数据