MySQL 8.0 Server Query Path 2019-10-01 - 宸风
Arch
目录 1 MySQL Parser 2 MySQL Resolver (rewriter) 3 MySQL Optimizer 4 MySQL Executor
MySQL Parser
Parser - AST
Parser - AST Related codes: - sql_parse.cc - sql_yacc.cc - item*.h/.cc Ref: http://mysql.taobao.org/monthly/2017/04/02/
Parser - Item Ref: MySQL Item 源码阅读笔记 • • • • • •
MySQL Resolver
Resolver
Resolver – Semantic check
Resolver - View Merge or Materialization
Resolver - View Merge Example https://dev.mysql.com/doc/refman/8.0/en/view-algorithms.html
Resolver – Subquery Optimization à
Resolver – Subquery Optimization https://mariadb.com/kb/en/library/non-semi-join-subquery-optimizations/#the-in-to-exists-transformation
Resolver – Subquery Optimization Rewrite Algos
Resolver – Subquery Optimization Rewrite Algos
Subquery Optimization SemiJoin Execution Algos
Subquery Optimization SemiJoin Execution Algos
Subquery Optimization SemiJoin Execution Algos
Subquery Optimization SemiJoin Execution Algos
Subquery Optimization SemiJoin Execution Algos
MySQL Optimizer
SQL Optimizer – Main procedure Ref: MySQL 8.0 Optimizer 源码笔记 Ref: MySQL 8.0 Distinct 源码笔记
SQL Optimizer
SQL Optimizer
SQL Optimizer - statistics
SQL Optimizer – cost model
SQL Optimizer – join reorder
SQL Optimizer – access method • • • • •
SQL Optimizer – access method
MySQL Executor
SQL Executor – do select
SQL Executor – Nested-Loop Join HashJoin is coming in MySQL 8.0.17
SQL Executor – RowIterator
SQL Executor – MRR, BKA
SQL Executor – ICP (Index cond pushdown)
Missing branches/features in QueryPath - privilege - fulltext - CTE - table function - partitioned table - window - GIS/JSON, etc. - perf & track - agg & distinct - rollup - distribution related - etc …

Mysql server query path