当你执行一次MySQL查询时,有没有仔细想过,在查询结果返回之前,经过了哪些步骤呢?这些步骤有可能消耗了超出想象的时间和资源。因此,在对MySQL的查询进行优化之前,应该了解一下MySQL查询的生命周期。




mysql表的生命周期 mysql数据生命周期_存储引擎


上面的这张图,是大家经常看到的MySQL的架构图,关于MySQL的各个部分显示的很详细。如果从大的方面来看,可以将MySQL分为两层,SQL层和存储层。SQL层包括控制连接、准备语句等,存储层则主要包括以各种插件形式提供的存储引擎。目前对于MySQL来说,最重要的,也是完全支持事务的引擎是InnoDB。

当应用程序,或者通过客户端执行一个查询时,首先要做的就是创建一个连接,当查询通过连接到达MySQL时,要对其进行解析。解析过程包括,将查询拆分并标记,以便知道查询的类型,并且会使用一个列表,里面包含查询所需的表和列的信息,这个列表会在下一步使用。接下来,MySQL会检查该用户是否有对列表里的对象执行操作的权限。通过权限检查后,查询将进入优化器,优化器会涉及重写查询、决定表的访问顺序,以及使用哪些索引等工作。实际的执行步骤包括从存储引擎层请求数据。每个存储引擎处理的方式可能不同。InnoDB包括一个缓冲池,用于缓存数据和索引、重做和撤消日志、其他缓冲区以及表空间文件。如果查询返回结果,结果将通过SQL层从存储引擎发送回应用程序。关于InnoDB的架构,请参考下图,详细的过程今后找机会介绍:


mysql表的生命周期 mysql数据生命周期_mysql表的生命周期_02


简单的总结一下,MySQL查询的生命周期包括:创建连接、解析SQL、检查权限、优化查询、执行查询(与存储引擎进行交互)、返回结果给应用程序或客户端。


mysql表的生命周期 mysql数据生命周期_SQL_03


以上内容是对MySQL查询生命周期的一个简单介绍,希望能够对使用MySQL的你有所帮助。

链接:MySQL查询的生命周期
作者:MySQLSE