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

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

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

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

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

欢迎关注个人公众号“MySQL解决方案工程师”

mysql 数据库生命周期_MySQL查询的生命周期相关推荐

  1. mysql数据库出现缓慢_MySQL查询缓慢的N种原因,以及N+1种解决方法

    昨天查询数据库的时还正常,今早来上班时,SQL语句查询就突然变得很慢了.这样的情况我相信你一定遇到过. 下面就让小编来带你了解其中的原因吧! 本篇文章简单总结了一下可能导致数据库查询慢的原因,希望能给 ...

  2. mysql数据库 查找数据类型_Mysql查询数据库表结构以及字段类型并展示

    1.建表语句sys_user CREATE TABLE `sys_user` ( `id` varchar(32) NOT NULL COMMENT '编号', `dept_id` varchar(3 ...

  3. MySQL数据库应用 多表查询_mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: ​ 数据库的创建 : create ...

  4. mysql数据库优化命令_MySQL数据库优化总结

    一个:MySQL标准数据库优化注意事项 1.数据库设计(表设计合理)三范式(规范的模式) 三范式包含: 第一范式:1NF是对属性的原子性的约束.要求属性具有原子性,不可再分解.(仅仅要是关系型数据库都 ...

  5. mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  6. kettle 查询数据库写入文件_怎么连接数据库-详解如何用kettle连接mysql数据库并导出sql查询结果...

    概述 今天主要介绍下kettle怎么去连接mysql数据库及导出sql查询结果. 1.数据库链接驱动 如果没有安装对应的数据库驱动,在数据库连接的过程中,可能会报某个数据库连接找不到的异常,因此需要下 ...

  7. python查询mysql数据库_python针对mysql数据库的连接、查询、更新、删除操作示例...

    本文实例讲述了python针对mysql数据库的连接.查询.更新.删除操作.分享给大家供大家参考,具体如下: 连接 一 代码 import pymysql # 打开数据库连接 db = pymysql ...

  8. java JDBC连接MySQL数据库调用存储过程进行查询

    java JDBC连接MySQL数据库调用存储过程进行查询 主程序代码 工具类 文件信息 存储过程 结果截图 主程序代码 package Mysql;import util.JDBCUtils; im ...

  9. mysql数据库中查询第几条到第几条数据_在 mysql 数据库中,从查询结果的第四条记录开始选取5条记录,下面 sql 语句正确的是( )...

    [单选题]同一种货物,在同一线路上或平行线路上作相对方向的运送,而与对方运程的全部或一部分发生重迭交错的运输被称为( ). [多选题]水闸一般由()三部分组成 [单选题]在一个常规的统计表内,非必需包 ...

最新文章

  1. 从零学习 vim 一个多月, 感觉最有用的三个教程
  2. golang中的strings.Trim
  3. Skpi List跳表
  4. 【Linux】7_存储管理基本分区
  5. 阿里云RDS vs 自建MySQL,这篇评测终结你的选择困难症!
  6. 转:Android中如何修改系统时间(应用程序获得系统权限)
  7. mssql 远程无法连接mysql_在本地 怎么远程连接MSSQL数据库
  8. Javascript面向对象二
  9. Lambda表达式与函数式接口详解
  10. SpringBoot整合Redis + SpringCache + Protobuf,优雅地实现key-value键值对存储DEMO。
  11. wex5 新建mysql数据库_wex5新增数据库
  12. 在线检测本机ip的网站
  13. 计算视频的信息传输速率
  14. Redis设计与实现——对象
  15. 【毕业设计_课程设计】基于机器学习的情感分类与分析算法设计与实现(源码+论文)
  16. 智慧树工业机器人测试答案_智慧树工业机器人答案章节单元测试答案
  17. 微信小程序实战 (WXSS:小程序版CSS、WXS:小程序版JavaScript)
  18. PTA(接口)用java写 7-8 USB接口的定义
  19. QPSK调制与解调原理
  20. 最详细的ensp安装及使用

热门文章

  1. 3D游戏建模行业对学历有要求吗?培训机构靠谱吗?需不需要美术基础?
  2. 传奇人物:他在大学时就已开发Pro Metronom App,助力全球3000多万用户学习音乐!
  3. 5d无法连接计算机,r5连接电脑,出现如下界面,死活连不上 - Canon SLR/DSLM论坛
  4. 最新汽车娱乐系统测试,你了解吗?
  5. 一个绝好的大型软件ISO下载FTP站!
  6. 火狐浏览器3.0下载
  7. 膜拜单车显示服务器忙,摩拜单车为什么扫码没反应闪退_摩拜单车服务器故障_3DM手游...
  8. 人生的12句Comperehend领悟-感悟颇深
  9. unity 手机重力迷宫(四)
  10. #205-[STL set] 灰色头像