MySQL粗略划分分为哪几部分?
MySQL 可以分为 Server 层和存储引擎层两部分,结构如下:
Server 层:包含了MYSQL的主要核心功能,包括建立连接、分析sql、优化sql、执行sql,以及各类函数。
存储引擎层:负责存储数据,提供读写接口。
Server 层每个部分的组件和职责是什么?
连接器:客户端连接到数据库
分析器:词法分析,语法分析
优化器:执行计划生成,索引选择
执行器:操作引擎,返回结果
存储引擎:存储数据,提供读写接口
Server 层中还包含一个“查询缓存”,但是其使用效率是很低的,也就是缓存失效非常频繁,因为前一次查询的数据缓存后,一旦缓存相关的表被更新,缓存则失效,对于一个更新频繁的表使用缓存,效果反而时而其反。查询缓存使用场景就是静态数据,例如更新不频繁的字典数据。
一个查询SQL的执行流程如下:
|-------------------------------------------|
| 连接器 -->客户端连接到数据库 |
| ↓ |
| |
| 分析器 -->词法分析,语法分析 |
| ↓ |
| |
| 优化器 -->执行计划生成,索引选择 |
| ↓ |
| |
| 执行器 -->操作引擎,返回结果 |
|-------------------------------------------|