在工作中,MySQL的使用非常普遍,几乎每家公司都有它的身影。然而,我对一条SQL在数据库内部的流程和工作原理一直感到模糊。因此我决定整理记录下这些内容,以便日后复习。

pFxwbiq.png

第 1 步

通过传输层协议(如 TCP)向数据库发送 SQL 语句。

第 2 步

将 SQL 语句发送到命令解析器,在那里进行语法和语义分析,然后生成查询树。

第 3 步

将查询树发送给优化器。优化器会创建一个执行计划。

第 4 步

将执行计划发送给执行器。执行器从执行计划中获取数据。执行器与存储引擎交互以访问数据。

第 5 步

访问方法提供执行所需的数据获取逻辑,从存储引擎获取数据。

第 6 步

访问方法决定 SQL 语句是否只读。如果查询是只读的(SELECT 语句),则将其传递给缓冲区管理器进行进一步处理。缓冲区管理器会在缓存或数据文件中查找数据。

第 7 步

如果语句是 UPDATE 或 INSERT,则将其传递给事务管理器做进一步处理。

第 8 步

在事务处理期间,数据处于锁定模式。这是由锁管理器保证的。它还能确保事务的 ACID 属性。