OceanBase V4.x 版本加强了对混合负载(HTAP)的支持,特别是引入了更高效的列式存储引擎,以服务于实时分析查询(OLAP)。
希望与大家一起探讨:
-
适用场景 :在实际业务中,哪些具体的实时分析场景(如运营实时大盘、即席多维分析)已经成功应用了此特性?相比之前将数据同步到专用分析库的方案,性能和开发维护成本 有哪些具体的优劣对比?
-
表设计经验 :如何设计一张适合HTAP的表?例如,如何选择行存主表与列存副本的比例?如何设置
TTL 来管理列存副本的生命周期?
-
查询实践 :优化器是否会稳定地为分析类查询选择列存副本?是否需要通过
HINT 强制指定?在查询列存副本时,有哪些需要特别注意的SQL写法或调优点 (比如向量化执行)?
如果你已经在测试或生产环境中尝试了V4.x的列式分析功能,非常欢迎分享你的测试方法、配置参数、性能对比数据以及遇到的任何坑点。
【标签】 #HTAP #列式存储 #V4.x #实时分析
1 个赞
论坛小助手
#4
根据提供的文档片段,可以提炼出一些关于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_consistency和proxy_route_policy,以优化查询性能。
-
性能对比:通过实际业务场景下的测试,对比行存和列存的查询性能,特别是在大数据量和复杂查询下的表现。
更多信息请查看:
- OceanBase AP 核心特性
- OceanBase AP 概述
- OceanBase 概述
- OceanBase 数据库概述
- OceanBase 数据库测试概述
- 如何路由到只读型副本查询数据