写点什么

数据库性能优化必读,AntDB-M 全局统计信息

  • 2023-10-30
    浙江
  • 本文字数:1592 字

    阅读完需:约 5 分钟

统计信息主要是描述数据库表和表上的索引相关信息,常见的有表行数(row count)、选择率(selectivity)、基数(cardinality)、页面数等,以及描述数据分布特征的 MCV(高频非 NULL 值)、HISTOGRAM(直方图)等信息。

AntDB-M 作为一个分布式内存数据库,有管理节点(MN),计算节点(CN)和数据节点(DN)三种节点类型,要求在不同的节点上执行 sql 时,具有相同的执行计划。同时为了提高执行计划的生成效率,希望在制定执行计划时,相关辅助数据都在本地获取,减少跨节点访问数据的网络开销。为此,我们设计了全局统计信息汇聚,来帮助 AntDB-M 快速制定出更加优化的执行计划。


下面通过构建一个只有两个数据分片的分布式集群,来展示 AntDB-M 的部分全局统计信息。


第一步:分别创建一张 sharding 表 t1、single 表 t2 和 global 表 t3.



图 1:建表


第二步:在每张表中插入相同的 80 条数据,以 t1 表为例:



图 2:分别插入数据


第三步:通过查询命令来观察部分统计信息:



图 3:数据节点 1 执行



图 4:数据节点 2 执行


由图 3 和图 4 可知,sharding 表 t1 有一半的数据在数据节点 1,一半的数据在数据节点 2;single 表 t2 的全部数据都在数据节点 1;global 表 t3 在所有数据节点上都有全量数据。



图 5:任意节点执行索引信息查询


图 6:任意节点执行直方图信息查询


上面通过操作直观展现了部分统计信息的结果,下面我们来看看 AntDB-M 分布式集群内部是如何生成全局统计信息的。


全局统计信息(非直方图)汇聚原理:通过配置项 antdb_info_stat_time 设置节点每隔多长时间上报一次本地统计信息,只有 DN 的 leader 节点需要上报, 但是要分发给所有的 CN、DN 和 MN, 方式如下。

(1)对于 sharding 表和 single 表,由所有的 DN leader 汇报给 MN 的 leader(MN 对比 hash 值判断全局汇总数据是否发生变化,是否需要返回给 DN);

(2)对于 global 表,由所在的 DN leader 根据 hash 算法判断自己是否需要汇报;

(3)DN 的 leader 将汇报得到的结果推送给 DN 的备,MN 的 leader 主动推送汇总信息给 MN 的备和 CN 节点;


全局直方图信息生成原理:只有管理节点的主(MN leader)通过分布式采样,生成全局直方图信息,然后推送给其它所有节点。数据库运行过程中,MN leader 每隔一定时间判断某张表某个字段的直方图信息是否需要更新,若需要更新,则重新进行全局采样(MN leader 内部可多线程并发更新)。分布式数据库 AntDB-M 在对字段进行范围估算时,直接使用全局直方图信息来提高估算的准确率,同时减少 rpc 次数以提高执行效率。

全局直方图信息在各个节点上都会持久化存储,其它全局统计信息可通过参数配置是否需要持久化。平时使用的时候,这些统计信息都是从内存中获取。


个性化功能:除了进程内部的常驻线程进行扫描和汇报,AntDB-M 还提供命令进行统计信息的手动更新和上报,用来在某些特定的场景下定位问题或者更快地更新全局统计信息。



图 7:数据节点 1 执行更新和上报



图 8:管理节点的主上执行更新全局直方图信息


全局统计信息的应用及优势:AntDB-M 查询优化器是基于代价的优化(Cost-Based Optimization,简称 CBO),根据全局统计信息和设置的全局执行参数估算每种执行方式的代价,计算不同访问路径、不同 join 方式下,各种执行计划的成本,最后选择一种执行代价最优的执行方式,最大限度的满足客户业务要求。



图 9:AntDB-M 基于全局统计信息的查询优化器


由于具备全局统计信息自动汇聚和全局直方图信息(给优化器提供更准确的数据分布,且会随着分布式数据的变动而动态更新),AntDB-M 查询优化器在进行范围估算,索引选择上具有更高的准确性。同时,由于每个节点内存中有相关统计信息,在制定执行计划时不需要跨节点获取相关辅助信息,从而使得 AntDB-M 在复杂场景下具有更高的性能。


关于 AntDB 数据库


AntDB 数据库始于 2008 年,在运营商的核心系统上,为全国 24 个省份的 10 亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

用户头像

企业数据库创新实践者 2021-07-26 加入

AntDB数据库始于2008年,服务于全国20多个省份的10亿多用户提供在线服务;具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔电信核心交易,并保障系统持续0故障运行近十年。 官网:asiainfoah.com

评论

发布
暂无评论
数据库性能优化必读,AntDB-M全局统计信息_AntDB数据库_亚信AntDB数据库_InfoQ写作社区