看下面这张图:
我们用客户端或者应用程序连接Mysql 查询数据时候,会经历以下步骤:
1.连接数据库, 用户名和密码校验(权限校验)
2.mysq 解析器 :对sql 进行解析, 主要 先将 sql 语句 进行词法分析和语法分析. 这一步会校验sql中 字段, 表 是否在数据库中存在, 语句是否正确,如果解析错误,会返回 常见的 sql 解析错误提示.
3. 优化器 对sql 进行优化. mysql 并不是,以我们写的sql 语句进行查询,而是经过 查询优化器优化 后 然后才执行. 根据解析树 生成不同的执行计划 (Explain Plan ) 选择一种最优的执行计划.
主要做哪些优化: 例如
1.当我们多张表关联查询的时候,用哪张表的数据作为基准表
2.有多个索引可以使用的时候,选用哪个索引.
可以查看<<数据库查询优化器的艺术-原理解析与SQL性能优化>>
4. 执行器 : 执行器负责调存储引擎的API 执行查询操作, 返回结果.
5. 存储引擎: 规定 数据存储方式,是否支持事务 等特性,不同的场景选用不同的存储引擎. 不同存储引擎的API接口相同.
具体可以查看 存储引擎简介
网友评论