MySQL 执行计划和MySQL执行过程
SQL执行计划
数据库服务器在执行sql语句的时候,会准备几套方案,最后选择消耗资源最小的那个方案
MYSQL架构图:
MYSQL执行流程
- 客户端连接服务器。
- 查询缓存。不会直接查询数据库。会从缓存中查看是否存在相同语句的执行计划,如果存在将省略语法检查、语言检查、加锁、权限核对、SQL优化等过程。直接执行SQL语句。(以下为没缓存的情况)
- 语法检查。查看SQL语法规则是否OK,如果不OK,返回错误信息给客户端,否则进行下一步操作。
- 语义检查。若SQL语法OK,服务器会对SQL中的表,字段属性等内容进行检查。
- 确定最佳执行计划。以上均OK后,如果查询语句为SELECT时,服务器进程还是不会直接查询数据库文件,数据库服务优化器会按照一定规则对当前SQL语句进行自我优化(优化成都有限)。当优化器确定好最优执行计划后,会将该执行计划保存到缓存中,方便下次高效查询。
- 权限核对(数据访问权限)。如果连接的用户不具备数据访问权限时,将不能够获取倒是数据
- 加锁。为保证数据一致性,系统会对需要查询的对象加锁操作
- 语句执行。SQL解析完成之后,才会真正执行。如果当前选择执行的数据已被读取到缓冲区,直接返回该数据。如果缓冲区没有,从数据库中读取,病刷新到缓冲区。
- 数据提取。语句执行完后,查询的数据其实还在服务器中,需要通过服务器数据提取进程将数据返回到用户客户端。
MySQL 执行计划和MySQL执行过程
http://yoursite.com/post/206dd479.html/