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)这时才能真正对文件系统中的数据库文件做出修改
参考和辅助理解资料
最新文章
- JS特效之Tab标签切换
- SQL Server 简介
- 如何在java中使用别人提供的jar包进行导入,编译,运行
- Lintcode: Majority Number III
- OCR识别-python版(一)
- 手把手教你玩转Git分布式版本控制系统! (转载)
- Objetive-C initialize研究
- UBIFS文件系统介绍
- Mysql使用alias 防止对数据的误操作
- log.go 源码阅读
- JS Array.reduce 对象属性累加
- [物理学与PDEs]第3章习题7 快、慢及Alfv\'en 特征速度的比较
- 软件工程wc项目,基于py
- 调整和删除Win7休眠文件Hiberfil.sys释放C盘
- 1.2.4注意Sysyem.out.println与i--
- C#递归例程
- 浅谈《剑指offer》原题:不使用条件、循环语句求1+2+……+n
- leetcode451
- 如何在sublime中使用sftp
- python常用方法详解
热门文章
- solr特点五: MoreLikeThis(查找相似页面)
- centos7怎能开机设置文本界面
- JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
- mysql免安装版初始化
- Visual Studio效率神器——超级扩展ReSharper安装和破解
- Could not find any resources for the specified culture or the neutral culture
- [Swift实际操作]七、常见概念-(14)使用UIColor设置界面组件的颜色属性
- [iOS笔试600题]二、常识篇(共有72题)
- 关闭tomcat端口号
- C语言数据结构之二叉树的实现