表的统计分析操作

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.4
  • 【问题描述】:业务系统上,平时需要定时对表进行统计分析吗?还是tidb自动进行统计分析?

可自动也可手动收集,目的是为 CBO 生成高效的执行计划提供参考依据。

统计信息收集部分,见官方文档:
https://docs.pingcap.com/zh/tidb/stable/statistics#统计信息简介

生产环境下,一般采用哪种策略的比较多?

根据实际的业务需求选择自动 + 手动的方式:

1、自动收集:可以根据实际需要调整收集窗口以及 ratio 和并发,设置自动收集的任务。具体内容见上述文档。

2、手动收集:在某些特定场景下,比如某些表没有在自动收集的统计窗口内完成统计信息收集,或者某些表有大量的更新操作,出现统计信息健康度低的情况等等。可能需要手动收集,取决于实际的业务要求。

收集统计信息期间,会对表加锁吗?占用系统资源大吗?对业务交易有影响吗?

理论上,在收集期间不会加表级锁,收集有一定的阈值,到达后才会进行收集,默认为 0.5。

因为需要扫描表以及索引数据,故建议业务低峰期进行,占用资源情况,当前没有准确的测试数据,但可以控制并行度以及收集的时间窗口,在一定程度上降低对资源以及业务的影响,具体见官方文档: