数据库组成
数据库组成
由 Server 层 + 存储引擎组成.

server 层
- 连接器用来维持用户与数据库的连接, 认证, 管理等
- 缓存查询,如果当前有之前命令执行的缓存,就会直接返回之前的结果. (MySQL 8.0之后已经移除)
- 分析器用来判断当前输入的 SQL 语句是否合法
- 优化器会对 SQL 语句选择优化器认为最佳的方案进行执行操作
- 执行器执行语句并检查权限
存储引擎

查命令
当 SQL 命令进入存储引擎后 存储引擎会 首先 尝试 AHI 如果命中不查页哈希表 否则进入 页哈希表查看当前 记录所在页是否存在 buffer pool 中 不存在则从本地硬盘读取所在页进入buffer pool
更新命令
前几步与查命令相同,在修改前会先将当前原始旧数据先写入 Log Buffer 写入 Undo Tablespace, 然后将数据写入 buffer pool 中的 page 同时 将当前数据通过 Log buffer 写入 Redo log, 然后异步更新.