MySQL(一)——mysql运行机制

一、MySQL运行机制数据图

mysql运行机制图.jpg

二、运行机制解释

  1. 建立连接:通过客户端/服务器通信协议与MySQL建立连接。MySQL客户端与服务端的通信方式是“半双工”通信。每一个MySQL连接,时刻都有一个线程状态来标识这个连接正在做什么。
      通信机制:
      ● 全双工:能同时发送和接收数据;
      ● 半双工:某一时刻,要么接收数据,要么发送数据,不能同时进行;
      ● 单工:只能接收或者发送数据。
  2. 查询缓存:这是MySQL查询中可优化的一个地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的sql语句,则将结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的语句,则由解析器进行语法语义解析,并生成“解析树”。
  3. 解析器:将客户端发送的sql进行语法解析,生成“解析树”。预处理器会根据一些MySQL规则进一步检查“解析树”是否合法,最后生成新的“解析树”。
  4. 查询优化器:根据“解析树”生成最优的执行计划。可分为两类:静态优化(编译时优化)、动态优化(运行时优化)。
    eg:
      ● 等价变换策略
       1=1 and a>1 改成 a>1
       a<b and a=1 改成 b>1 and a=1
       基于联合索引,调整条件位置等。
      ● 优化count、min、max等函数
       InnoDB引擎min函数只需要找索引最左边
       InnoDB引擎max函数只需要找索引最右边
       MyISAM引擎count(*),不需要计算,直接返回
      ● 提前终止查询
       使用了limit查询,获取limit所需数据后,就不再继续遍历
      ● in的优化
       MySQL会对in查询,先进行排序,再用二分法查找数据。比如where id in (2,1,3) 变成 in (1,2,3)
  5. 查询执行引擎:负责执行sql语句,会根据sql语句中表的存储引擎类型,以及对应的API接口与底层存储引擎缓存或物理文件交互,得到查询结果并返回给客户端。若开启查询缓存,此时会将查询结果与sql完整的保存到查询缓存中,以后有相同的查询就可以直接返回结果。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 运行机制图解 2. 运行过程 2.1 建立连接(Connectors & Connection Pool) ...
    雪砺青松灬阅读 156评论 0 0
  • 要理解MySQL的运行机制,先要看一下MySQL的语句是一个基本的执行过程,我们在客户端写的SQL先查缓存,缓存命...
    david161阅读 543评论 0 0
  • 本文来自于拜读《高性能MySQL(第三版)》时的读书笔记作者:安明哲转载时请注明部分内容来自《高性能MySQL(第...
    代号027阅读 5,548评论 0 21
  • 开局一张图 内容全靠编 本文主要说一下,应用程序在与数据库交互时,数据库的大概执行流程。整体上了解一下一条SQL的...
    EricDD阅读 240评论 0 0
  • mysql体系结构 关于mysql的整体体系结构如下: Client Connectors接入方 支持协议很多Ma...
    先生zeng阅读 987评论 0 2