MySQL里的语句是如何执行的?
文章目录
在工作中,MySQL的使用非常普遍,几乎每家公司都有它的身影。然而,我对一条SQL在数据库内部的流程和工作原理一直感到模糊。因此我决定整理记录下这些内容,以便日后复习。
第 1 步
通过传输层协议(如 TCP)向数据库发送 SQL 语句。
第 2 步
将 SQL 语句发送到命令解析器,在那里进行语法和语义分析,然后生成查询树。
第 3 步
将查询树发送给优化器。优化器会创建一个执行计划。
第 4 步
将执行计划发送给执行器。执行器从执行计划中获取数据。执行器与存储引擎交互以访问数据。
第 5 步
访问方法提供执行所需的数据获取逻辑,从存储引擎获取数据。
第 6 步
访问方法决定 SQL 语句是否只读。如果查询是只读的(SELECT 语句),则将其传递给缓冲区管理器进行进一步处理。缓冲区管理器会在缓存或数据文件中查找数据。
第 7 步
如果语句是 UPDATE 或 INSERT,则将其传递给事务管理器做进一步处理。
第 8 步
在事务处理期间,数据处于锁定模式。这是由锁管理器保证的。它还能确保事务的 ACID 属性。