物理优化

物理优化是基于代价的优化,为上一阶段产生的逻辑执行计划制定物理执行计划。这一阶段中,优化器会为逻辑执行计划中的每个算子选择具体的物理实现。逻辑算子的不同物理实现有着不同的时间复杂度、资源消耗和物理属性等。在这个过程中,优化器会根据数据的统计信息来确定不同物理实现的代价,并选择整体代价最小的物理执行计划。

理解 TiDB 执行计划文档已对每个物理算子进行了一些介绍。在本章我们会重点介绍以下方面:

  • 索引的选择中会介绍 TiDB 在一张表有多个索引时,如何选择最优的索引进行表的访问。
  • 统计信息简介中会介绍 TiDB 收集了哪些统计信息来获得表的数据分布情况
  • 错误索引的解决方案中会介绍当发现 TiDB 索引选错时,你应该使用那些手段来让它使用正确的索引
  • Distinct 优化中会介绍在物理优化中会做的一个有关 DISTINCT 关键字的优化,在这一小节中会介绍它的优缺点以及如何使用它。
  • 代价模型中会介绍在物理优化时,TiDB 怎么通过代价模型来选择一个最优的执行计划。