本文介绍如何通过控制台进行分区字段合理性诊断、分布字段倾斜诊断和复制表合理性诊断。

分区字段合理性诊断

AnalyticDB MySQL版在创建表时可以指定分区键来提高数据查询的性能,但是因为数据特征存在未知性或者随着业务特征变化发生变化,同时分区的合理性也与实例的规模相关,所以可能存在分区字段选择不合理的情况。分区字段合理性诊断可以帮助用户监控分区的变化,当分区不合理时及时提醒用户进行表结构的优化,保持或者提高实例的查询性能。

分区字段不合理判定规则

如果表中有10%以上的分区记录条数不在合理区间则视为不合理,具体的判定规则见下表:
节点数 二级分区记录数
1 1600w - 16000w
2 6400w - 64000w
4 - 6 12800w - 128000w
8 - 14 19200w - 192000w
16 - 30 25600w - 256000w
32 - 62 51200w - 512000w
大于64 102400w - 1024000w

如果分区记录数过少,建议加大分区粒度(如由按天分区改为按月分区),如果分区记录数过多,建议降低分区粒度(如由按月分区改为按天分区)。具体方法请参见结构设计

优化方法

  1. 使用阿里云账号登录云原生数据仓库AnalyticDB MySQL控制台
  2. 在页面左上角,选择集群所在地域。在左侧导航栏,单击集群列表
  3. 3.0集群列表中,单击目标集群ID
  4. 单击诊断与优化 > 数据建模优化,查看分区字段合理性诊断数据。2021040801

    您通过该表,可以判断哪些表存在分区不合理的情况,并且根据“不合理二级分区”来判断该表的哪些分区不合理,从而针对这些表或者分区进行相应的优化,具体方法请参见结构设计

分布字段合理性诊断

AnalyticDB MySQL版CREATE TABLE时可以指定分布键(DISTRIBUTED BY HASH)来完成数据在各个存储节点的均匀分布,但是因为数据特征存在未知性或者随着业务特征变化会发生变化,所以可能存在分布字段选择不合理的情况,最终会导致数据倾斜问题,造成各个节点处理数据时资源使用不均衡,子任务出现长尾,最终影响查询性能。分布字段合理性诊断会帮助用户及时观察到不合理的分布字段的使用,减少数据倾斜。

分布字段不合理判定规则

数据倾斜计算公式:
  1. 去掉一个最大的shard大小,再计算平均shard大小。
  2. 大于平均shard大小×threhold倍数的shard,或者小于shard分区/threshold的shard都属于倾斜的shard。threshold表示阈值,可以调整配置,当前默认值是3。

优化方法

  1. 使用阿里云账号登录云原生数据仓库AnalyticDB MySQL控制台
  2. 在页面左上角,选择集群所在地域。在左侧导航栏,单击集群列表
  3. 3.0集群列表中,单击目标集群ID
  4. 单击诊断与优化 > 数据建模优化,查看分布字段倾斜诊断数据。

    在倾斜表中,您可以查看某个数据库中已经存在倾斜的表,重新进行分布字段的选择,具体方法请参见结构设计

复制表合理性诊断

AnalyticDB MySQL版在创建表时可以指定数据的分布方式为复制方式(DISTRIBUTED BY BROADCAST),复制表会在实例的每个存储节点保存一份完整的表数据,您在使用其他表和复制表join时,不需要在网络间对复制表进行重分发,从而提升查询的性能,但是复制表在写入数据时会存在写入放大的问题,影响AnalyticDB MySQL版整体写入性能。复制表合理性诊断可以帮助用户检测到这些不合理的复制表。

复制表不合理判定规则

复制表单表大于2万条记录即视为不合理。

优化方法

  1. 使用阿里云账号登录云原生数据仓库AnalyticDB MySQL控制台
  2. 在页面左上角,选择集群所在地域。在左侧导航栏,单击集群列表
  3. 3.0集群列表中,单击目标集群ID
  4. 单击诊断与优化 > 数据建模优化,查看复制表合理性诊断数据。

    通过页面直接查看诊断结果,或对复制表进行count查看条数,然后和建议值进行比较。