作者简介
无为,多年 MySQL DBA 工作经验,现就职于某知名互联网公司,对 MySQL、 Redis、PostgrepSQL 等主流数据库有一定了解,拥有丰富的一线运维经验。
在有关 MySQL 的面试时,是不是曾经有被问到过:一条 update 语句的生命历程是怎样的?今天就来聊聊这一面试题。
这篇文章通过这条语句进行讲解:
update test set a=5 where id = 10;
一条 SQL 语句在的执行,总的来说可以分为:Server 层和存储引擎层(本节只聊 InnoDB),下面来仔细聊聊这些过程。
1 Server 层
1.1 连接层
负责跟客户端建立连接、账号密码验证、获取权限、维持和管理连接。
1.2 分析器
在通过验证以后,分析器会对该语句分析,判断是否语法有错误等。
1.3 优化器
选择索引,生成执行计划。
1.5 执行器
根据优化器生成的执行计划,调用存储引擎 API 执行 SQL。
二 、InnoDB 引擎层