本文旨在从select语句的解析和执行过程, 了解 MySQL的逻辑结构。
先看 select语句执行时都要经过哪些模块处理....连接器
负责建立连接、维持和管理连接, 以及验证权限。
在你登录失败时, 经常会遇到”Access denied for user”错误, 就是连接器中的权限验证没有通过....用户登录认证通过之后, 连接器会从权限表中查出对应的权限, 之后该连接相关的所有权限判断, 都依赖于此时读到的权限.
即使管理员账号对这个用户的权限做了修改, 也不会影响已经存在连接的权限。...Select语句会被解析成语法树, 并根据存储引擎特点, 表相关统计数据等信息, 进行sql重写, 读表顺序调整, 多表联合查询时的连接顺序调整, 索引选择等优化操作.
5....查询缓存
缓存查询结果, sql会做为缓存的 key.
查询缓存看似能提高 select效率, 但却是弊大于利的. 原因是一个表只要有更新, 那这个表上所有的查询缓存都会被清空。