Mysql工作流程分析
Mysql工作流程图

工作流程分析
1. 所有的用户连接请求都先发往连接管理器
2. 连接管理器
(1)一直处于侦听状态
(2)用于侦听用户请求
3. 线程管理器
(1)因为每个用户请求都需要开启一个线程来响应
(2)所以线程管理器通过给用户创建新的线程或完成线程重置的方式给用户一个响应线程
4. 用户模块
(1)对用户连接请求需要检查用户权限
(2)用户模块用于验证用户身份和用户请求(是否有访问mysql服务器的权限)
(3)若用户请求不通过,由用户模块负责退回用户请求
(4)若用户请求通过,则使得用户连接
5. 命令分发模块
(1)一旦用户具有连接权限,那么用户就可以发一些SQL语句
(2)命令分发模块负责把不同类型的语句分配到与之对应的解析器上
|
|
|———>6. 缓存模块
| (1)若用户发的SQL语句是一个查询语句,且缓存中有查询结果的内容
| (2)则命令分发模块与缓存模块交互
| (3)由缓存模块直接把这个结果返回给用户(详见mysql缓存机制)
|
|———>7. 日志模块
(1)用户发起一个命令(语句),都会记录在日志中
(2)日志模块主要功能是记录用户查询
(3)所以命令分发模块也有可能和日志模块进行交互
8. 解析器
(1)解析查询生成解析数,由解析器判断命令最终属于哪种语句
(2)交给它下面的底层模块进行分段解析
|
|
|———>8.1 优化器
| 如果解析器解析此命令是select语句,需要交给优化器进行优化
|———>8.2 表定义模块
| 如果是update、insert、delete语句,需要交给表定义模块
|———>8.3 表维护模块
| 如果是repair相关的语句,需要交给表维护模块了,表维护模块主要作用是修复表中的某些逻辑错误
|———>8.4 复制模块
| mysql中的主从服务器同步过程需要复制模块
|———>8.5 状态报告模块
mysql中的状态变量需要状态报告模块来存储每一个执行过程中的状态信息
9. 访问控制模块
(1)这个命令(语句)想要真正执行,还是要通过访问控制模块来检查权限
(2)访问控制模块用于检验用户的操作是否具有足够的操作权限(是否能对表进行更新或修改操作等)
10. 表管理器
(1)若有足够的操作权限,则由表管理器完成真正的命令操作
(2)表管理器负责创建/读取/修改表定义文件
11. 存储引擎接口和存储引擎
(1)表管理器通过存储引擎接口交给存储引擎(核心):MYISAM/INnoDB
(2)可以把存储引擎比喻成大脑,之前所有的步骤使之做出了所有准备动作,等大脑发号施令就可以实施动作了
(3)这时才能真正对文件系统中的数据库文件做出修改
参考和辅助理解资料
Mysql工作流程分析的更多相关文章
- 【转】Hostapd工作流程分析
[转]Hostapd工作流程分析 转自:http://blog.chinaunix.net/uid-30081165-id-5290531.html Hostapd是一个运行在用户态的守护进程,可以通 ...
- 第2章 rsync算法原理和工作流程分析
本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释. 以下是本文的姊妹篇: 1.rsync(一):基本命令和用法 2.rsync(二):ino ...
- [国嵌笔记][030][U-Boot工作流程分析]
uboot工作流程分析 程序入口 1.打开顶层目录的Makefile,找到目标smdk2440_config的命令中的第三项(smdk2440) 2.进入目录board/samsung/smdk244 ...
- rsync算法原理和工作流程分析
本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...
- nodejs的Express框架源码分析、工作流程分析
nodejs的Express框架源码分析.工作流程分析 1.Express的编写流程 2.Express关键api的使用及其作用分析 app.use(middleware); connect pack ...
- u-boot分析(二)----工作流程分析
u-boot分析(二) 由于这两天家里有点事,所以耽误了点时间,没有按时更新,今天我首先要跟大家说说我对于u-boot分析的整体的思路,然后呢我以后的博客会按照这个内容更新,希望大家关注. 言归正传, ...
- Struts2的工作流程分析
Struts2的工作流程分析 Posted on 2011-02-22 09:32 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验, ...
- rsync(三)算法原理和工作流程分析
在开始分析算法原理之前,简单说明下rsync的增量传输功能. 假设待传输文件为A,如果目标路径下没有文件A,则rsync会直接传输文件A,如果目标路径下已存在文件A,则发送端视情况决定是否要传输文件A ...
- Kafka工作流程分析
Kafka工作流程分析 生产过程分析 写入方式 producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘 ...
随机推荐
- ssl协议,openssl,创建私有CA
SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...
- Cesium Language (CZML) 入门1 — CZML Structure(CZML的结构)
原文:https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-Structure CZML是一种用来描述动态场景的JSON架构的语言,主要用 ...
- UWP多线程枚举安全的List
最近在做windows runtime下APP开发的工作.在Service层请求返回后,往往会通过回调的形式来通知UI更新数据.多个线程操作经常出现foreach抛出异常:System.Invalid ...
- JZOJ6096 森林
题目传送门 Description 我们定义对一棵树做一次变换的含义为:当以 1 号节点为根时,交换两个互相不为祖先的点的子树: 一棵树的权值为对它进行至多一次变换能得到的最大直径长度: 初始时 ...
- A - 确定比赛名次(拓扑)
点击打开链接 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比 ...
- “全栈2019”Java异常第十一章:重写方法时只能抛出父类异常子集
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 真机测试 Thnetwork connection was lost. No profiles for 'xxx' were found: Xcode couldn't find a provisioning profile matching 'xxx'. Code signing is required for product type
最近接手了一个新项目,是从外包接手的,结果出现了很多问题,真的很崩溃,崩溃,吐槽一下 问题一:一直请求不到数据,因为外包只做了一版,上架的这个版本是可以显示数据的,但是给我的项目是没有数据的,因为并没 ...
- 【转载】hadoop之failed task任务和killed task任务
failed task可理解为自杀,也就是task本身出了问题而自杀:killed task可理解为是他杀,也就是jobtracker认为这个任务的执行是多余的,所以把任务直接杀掉.起初用hadoop ...
- linux互传文件nc命令
使用nc命令可以很快的在两台主机传递文件,且不需要在同一网段,只要设置好端口即可. 一.安装(CentOS下) yum install -y nc (需要root权限,可以用加上sudo) 二.使用 ...