作者:禅与计算机程序设计艺术
1.背景介绍
TiDB 是 PingCAP 公司自主设计、开发、开源的分布式 NewSQL 数据库产品,该产品经过多个版本的迭代演进,已经成为云原生时代最具备可扩展性、高性能、低延迟的数据分析处理能力之一。TiDB 3.0 即将发布,本文将对 TiDB 3.0 中的新特性 SQL 查询优化和索引使用的进行详细介绍。SQL 查询优化器主要负责查询转换、执行计划生成、统计信息收集和评估等操作。索引器则是整个系统的支撑模块,它通过计算索引的结构,管理索引的生命周期,并确保数据的正确性与完整性。 在 MySQL 的实现中,SQL 查询优化器和索引器都是由 MySQL 服务端实现的,这使得它们具有较高的性能,但是对于 TiDB 来说,他们已经成为系统的一个关键组成部分,并且正在进行重新设计以提供更高的性能和可用性。基于这些原因,我们决定在 TiDB 3.0 中引入新的特性,以提升系统的性能和可用性。
2.核心概念与联系
为了更好的理解 SQL 查询优化器和索引器的工作机制和原理,下面对一些核心概念及其关系做一个简单的介绍。
执行计划
TiDB 中所有的 SQL 请求都需要经过优化器的处理才能得到执行计划,优化器对 SQL 查询进行语义解析、逻辑计划生成、物理计划生成、统计信息收集等一系列优化过程,然后通过 Cost-Based Optimizer(CBO)模块来选择出最优的执行计划。执行计划是指一条 SQL 请求在 TiDB 上运行时的逻辑视图。
逻辑计划
逻辑计划的作用是将 SQL 查询转换成对应数据库中的操作序列