目录:
- Mysql 数据库模型
- Sql执行过程
MySql数据库模型
层 | 模块 | 作用 |
---|---|---|
Server | 连接器 | 与客户端建立连接、获取权限、管理连接 |
Server | 查询缓存 | 缓存结果数据、已经废弃 |
Server | 分析器 | 语法分析、语法树、校验语法正确性 |
Server | 优化器 | 选择最佳执行方案 |
Server | 执行器 | 调用存储引擎接口、执行方案 |
存储层 | 存储引擎 | 从硬盘、内存读取数据 |
Sql执行过程
查询
更新
Mysql8.x
注意:当事务执行 COMMIT 操作时,MySQL 5.x 版本的 InnoDB 存储引擎会首先将该事务写入 binlog,然后再将数据页刷新到磁盘。这样做的原因是为了保证数据的一致性和可靠性,即使在发生系统故障或者崩溃的情况下,也可以通过 binlog 进行数据恢复。
graph TD A[解析 SQL 语句并生成执行计划] --> B[检查事务隔离级别和启动新事务] B --> C[页读取] C --> D[加排它锁] D --> E[拷贝数据页到 Undo Log Buffer 中] E --> F[写入修改后的数据到数据页副本中] F --> G[写 redo log] G --> H[写入 binlog 文件] H --> I[刷新数据页到磁盘中的数据文件] I --> J[提交事务] J --> K[释放排它锁]