读性能慢-慢语句

其他问题

SQL 执行的并发度不足

在 OLAP 场景下,我们需要查询大量数据需要进行聚合统计分析,此时 TiDB 默认的算子并发度会偏保守,需要我们手动调整相应的参数。

聚合函数的优化

在 TP 场景为了提升并发度一般推荐采用 stream agg 算子进行 聚合统计。但在 AP 场景 更适合使用 hash agg 进行多并发的数据统计,可有效提升聚合函数的效率,并且通过加大 hashagg 算子的并发线程数还可以进一步提升效率。

超范围数据的估算错误

在之前的 TiDB 版本,当查询值不在统计信息 bucket 的 最小值与最大值的范围内,就会导致估算的选择率大大超出了预期,尤其在表的数据更新非常少的场景下,这个估算结果的偏差会更加严重

MVCC 旧版本过多

在日常使用 TiDB 时候为了防止数据误删除,我们会把 GC Life time 设置一个比较长的时间,譬如 24H。由于目前此设置是一个全局设置,在某些表更新非常频繁的情况情况下就会有大量的 MVCC 比较旧的版本存在,如果版本过多会对查询性能有较大影响

  • 问题定位
    通过查看 slow query 或 statment summary 表中 Processed ed Keys 与 Total Keys 的值 。与 total keys 相比,processed keys 不包含 MVCC 的旧版本。如果 processed keys 和 total keys 相差很大,说明旧版本比较多。

  • 解决办法
    调整 GC Life Time 到一个比较合理的时间范围,未来有计划根据不同的表设置不同的 GC Life Time

3 个赞