架构
我们可以通过一条 SQL 的执行过程来介绍 MySQL 的基础架构
经典的一张图:
大体上,MySQL 分为 Server 层和存储引擎层两部分。
Server 层包括连接器、查询缓存、分析器、执行器等,以及所有的内置函数(如日期、时间、数学和加密函数等)和跨存储引擎的功能(如存储过程、触发器、视图)。
存储引擎层负责数据的存储和提取,支持 InnoDB、MyISAM、Memory 等多个存储引擎。MySQL 5.5.5 版本后默认存储存储引擎是 InnoDB。
连接器
连接器顾名思义就是负责跟客户端建立连接,并且来管理连接的
无多余操作---->连接空闲,超时断开,默认为8h
连接分为长连接、短连接
- 数据库里面,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。
- 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
短连接频繁建立比较消耗资源,而许多长连接存在会占用大量资源,可以考虑定期断开长连接
查询缓存
执行过的语句及其结果会以 key-value 对的形式保存在一定的内存区域中
很长时间才更新的表适合查询缓存,MySQL 8.0 版本将查询缓存的功能删除了
分析器、优化器、执行器
功能分别是:
- 对Sql语句进行词法分析、语法分析
- 决定使用哪一个索引,以及join的连接顺序
- 权限验证,调用引擎提供的接口