Lesson 04:Execution 性能优化疑问讨论

FQA

  1. Volcano 是什么,与算子有什么关系?

  2. 我需要学习什么,然后如何优化

  1. Volcano 是什么,与算子有什么关系?

Volcano 模型是一篇论文里面提出来的,是数据库优化器的经典框架。
SQL 会经过 logical plan,physical plan,然后到 executor。整个语句在这些步骤中会被解析成关系代数 (select / project /join /union 等等),再经过 logical rules 的 rewrite, 再结合统计信息的 phyiscal rewrite,变成执行器层的算子。Volcano 就是告诉你这样一个优化器的框架。

到了执行器那边,算子就是一个树型的结构(或者说 DAG 有向无环图),然后上层节点的不停调用 Next ,找下层的算子获取数据…最后将结果吐出完成 SQL 请求。

  1. 我需要学习什么,然后如何优化

需要善用搜索引擎;
多多关注我们的博客或者技术文档类的;(比如博客,比如知乎
再硬核一点的模式就是读代码,然后给我们提 PR… 自己写代码是理解最透彻的

问:跟踪一个查询sql 如何执行的

eg:

select binary col0 = 1101002 from t7;

select count(*) from t7;

我在session.go 跟踪 ExecuteStmt函数,查看函数调用关系。

单步跟踪到 count(*) ,binary col0 = 1101002,类型转换,这些算子 执行过程

请问 这需要在哪里看到呢? 这个很难和 Lesson 04:Execution 性能优化 结合起来呢?