一条查询SQL
表T只有一个字段ID,当执行如下查下时发生了什么?
mysql> select * from T where ID=10;
MySQL架构
从架构图中可看出,MySQL分为两部分:Server层(连接器、查询缓存、优化器、执行器等)和存储引擎层(InnoDB、MyISAM、MEMORY等,InnoDB是MySQL 5.5.5之后默认的存储引擎)。
- 连接器:负责与客户端建立连接、获取权限、维持和管理连接。
- 查询缓存:建立连接后,可执行select语句。命中缓存则直接将结果返回给客户端,否责将入下一步:分析器。(注:由于查下缓存失效频繁,如对一个表进行更新,该表的所有缓存都会失效,故MySQL 8.0去除了查询缓存的功能)。
- 分析器:对查询语句进行“词法分析”和“语法分析”。
- 优化器:为SQL选择一个最优的方案进行执行。
- 执行器:调存储引擎的接口,执行SQL。
本文为《MySQL实战45讲》学习笔记