tencent cloud

文档反馈

功能简介

最后更新时间:2023-12-12 14:29:56

    背景

    随着越来越多的用户将核心系统上云,用户数据量不断增加,业务逻辑也变得越来越复杂。虽然 TDSQL-C MySQL 版的云原生架构可以较好地处理业务的事务请求,但是对于用户多样化的查询分析需求,基于行存的查询并不能总是满足用户的响应时间要求。一种常见的解决方案是采用数据同步工具,将事务系统的数据复制到独立的分析系统中,并将用户的查询分析路由到分析系统中,然而,这种解决方案存在一些缺点,如数据同步和独立分析集群的额外成本,同步的实时性和一致性等问题。
    为了解决这类问题,TDSQL-C MySQL 版推出了 CSI(Column store Index)列存索引功能。该功能使用列式数据格式存储、检索和管理数据的技术,可实现更好的查询性能和更高的数据压缩率。

    功能优势

    相比传统的基于行的存储方式,列存索引使用基于列的数据存储和查询处理,可以实现一个量级的查询性能提升。此外,列存储更有利于数据压缩,相比行存储,可以降低近一个量级的存储空间。

    支持版本

    内核版本 TDSQL-C MySQL 版8.0 3.2.1。
    说明:
    要升级至此版本,当前需 提交工单 申请,针对只读实例而言,符合版本要求的情况下,4核以上的只读实例才可以开启列存索引功能。

    应用场景

    在线报表,数据看板等对在线数据有实时数据分析需求的场景。
    大数据量分析型查询场景。

    技术原理

    
    
    
    TDSQL-C MySQL 版的列存索引能力,基于如下3个关键技术点实现:
    1. 行列数据的混合存储
    在 TDSQL-C MySQL 版中,数据默认以行式存储。为了更好地支持分析查询,列式存储是更为合适的选择。在统一的架构上,我们采用了为行存表创建列存索引的方式,达到数据混合存储的目的。
    2. 行列混合计划的生成与调度执行
    TDSQL-C MySQL 版基于优化器的统计信息、代价模型,让列存索引适配当前行存优化器模型,并参与 CBO(代价优化器)的搜索空间。进而执行计划片断下压,基于片断执行混合调度。
    3. 高效计算
    由于数据是以列式单独存储于数据块中的,计算时只读取所需要的列数,从而可以大大减少 IO 层的开销,特别是大宽表的场景。并且,列式数据可以按更精凑的方式存储在内存中,使用列存索引 CSI 计算时,各个算子尽量按批处理多行的列数据,充分发挥 CPU 的 cache 亲和力,从而可以提高计算效率。
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持