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的组合,自动应用于相同查询,从而管理执行计划。

➡️

继续阅读