如何测试数据库查询优化器

Posted 分布式系统之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何测试数据库查询优化器相关的知识,希望对你有一定的参考价值。

我一直认为,查询优化器(Query Optimizer,后面简称优化器)一直是数据库领域 Top 级别的 hardcore 技术,自己也一直尝试去深入理解,但每每看到 TiDB 代码里面那一大坨 plan 的代码,我就望而生畏了,就像是『可远观而不可亵玩焉』。但虽然很难理解,还是能通过方式去理解优化器的,一个最直观的做法就是生成不同的 Query 去验证优化器的效果,实际在 PingCAP 内部,我们也是通过 Fuzz, A/B testing 等技术,来验证优化器是否出现性能问题这些。

但无论怎样,优化器的验证和测试工作是一件非常难的事情,毕竟对于一条 Query,数据库可能会生成非常多的查询计划(plan),我们当然可以通过穷举的方式找到最优的一条 plan,但实际中,我们只能在有限的时间内找到一个比较优的 plan。那么我们如何能确定优化器找到的是一条比较好的 plan 呢?自然需要有一些评价标准,最近看了几篇 Paper,刚好在这个上面做了研究,也对我们后续测试的改良提供了一些方向吧。


以上是关于如何测试数据库查询优化器的主要内容,如果未能解决你的问题,请参考以下文章

如何做SqlServer 数据查询优化!

如何提高查询性能?

SQL 数据库查询的优化工具及实用

优化SQL查询:如何写出高性能SQL语句

优化SQL查询:如何写出高性能SQL语句

Oracle查询速度优化问题