MySQL 实战 45 讲 笔记 ----来源《极客时间》
01 | 基础架构:一条SQL查询语句是如何执行的?
1. MySQL 可以分为 Server层 和 存储引擎层 两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等。存储引擎层支持 InnoDB、MyISAM等.
(1) 连接器:管理连接,权限认证。
(2) 查询缓存:命中则直接返回结果。
(3) 分析器:词法分析,语法分析。
(4) 优化器:生成执行计划,选择索引。
(5) 执行器:操作引擎,返回结果。
(6) 存储引擎:存储数据,提供读写接口。
2. 临时内存累积问题: 在执行过程中临时使用的内存会保留在连接对象里面,在连接断开的时候才释放。所以长连接累积下来,会导致内存占用太大,被系统强行杀掉(OOM)。
解决办法:可以执行 mysql_reset_connection 来重新初始化连接资源,释放内存。而且它不需要重连和重做权限验证。
3. 查询缓存往往弊大于利,MySQL 8.0 版本将查询缓存的功能删掉了。