TiDB 优化器 | 执行计划管理及实践
💡
原文中文,约29700字,阅读约需71分钟。
📝
内容提要
TiDB优化器生成执行计划的过程包括SQL解析、改写和代价估算。由于统计信息和估算误差,优化器无法每次选择最佳计划。为提高查询性能,TiDB提供了Hint、SQL Binding和执行计划缓存等手段,以确保计划的稳定性和高效性。
🎯
关键要点
- TiDB优化器生成执行计划的过程包括SQL解析、改写和代价估算。
- 优化器无法每次选择最佳计划,受统计信息和估算误差影响。
- TiDB提供Hint、SQL Binding和执行计划缓存等手段提高查询性能。
- 优化器负责将SQL转换为执行计划,影响查询性能。
- 不同执行计划的效率差异可能很大,错误计划会带来负面影响。
- TiDB优化器生成执行计划的三步:解析SQL、改写和探索、代价估算。
- 优化器的改写模块和代价模型存在局限性,可能导致选错计划。
- 执行计划管理可以降低优化器选错计划的风险。
- SQL Hint用于手动指定优化器选择特定的执行计划。
- TiDB支持超过30种Hint,涵盖索引访问、Join方式、资源控制等。
- SQL Binding允许记录查询和Hint的组合,自动应用于相同查询。
- TiDB Dashboard提供UI支持,方便绑定执行计划。
- 影响执行计划的变量包括tidb_opt前缀的系统变量。
- Fix Control变量用于控制优化器的行为细节。
- Plan Cache功能缓存执行计划,提高性能和稳定性。
- 建议使用Prepare/Execute语法以利用Plan Cache,提升性能。
- TiDB优化器新特性包括实例级别的Plan Cache和Inactive Binding。
❓
延伸问答
TiDB优化器的执行计划生成过程包括哪些步骤?
TiDB优化器生成执行计划的过程包括SQL解析、改写和代价估算三个步骤。
TiDB如何提高查询性能?
TiDB通过Hint、SQL Binding和执行计划缓存等手段来提高查询性能。
什么是SQL Hint,它的作用是什么?
SQL Hint是一种特殊语法,用于告诉查询优化器如何生成执行计划,以达到人为控制或干预执行计划的目的。
TiDB的执行计划管理有哪些技术手段?
TiDB的执行计划管理技术手段包括Hint、SQL Binding、相关变量及Plan Cache。
TiDB优化器为什么会选错执行计划?
优化器可能因改写模块、代价模型和基数估算的局限性,以及统计信息不准确或缺失而选错执行计划。
如何使用SQL Binding来管理执行计划?
SQL Binding允许记录查询和Hint的组合,自动应用于相同查询,从而管理执行计划。
➡️