【MySQL学习】关于MySql语句执行、查询、更新流程原理总结
面试官:说说MySql语句执行、查询、更新流程
一、执行流程
- 连接:客户端连服务器,验证身份和权限。
- 解析: 拆分SQL(词法分析)→ 检查语法(语法分析)→ 验证表/列是否存在(语义检查)
- 优化:决定是否用索引、如何连接表(生成执行计划)
- 执行:调用存储引擎(如InnoDB)操作数据:
查询:读数据 → 返回结果。
更新:改数据 → 记日志(redo log、undo log)→ 加锁 → 提交事务。 - 返回: 查询结果经处理(如排序)后返回客户端。
二、查询流程 - 客户端发查询请求。
- 解析SQL,优化器选索引(或全表扫描)。
- 存储引擎读数据,返回结果(可能过滤、排序)。
三、更新流程(INSERT/UPDATE/DELETE) - 客户端发更新请求。
- 解析SQL,优化器选执行方式(如用主键索引)。
- 关键步骤:
记录undo log(回滚用)。
记录redo log(prepare状态)。
写binlog(复制和恢复)。
提交事务(redo log改为commit`)。 - 返回操作结果(如影响行数)。