MySQL的执行流程
来源:互联网 发布:java int范围 编辑:程序博客网 时间:2024/06/05 00:53
1:MySQL流程图
2:MySQL的流程分析
1.连接
1.1客户端发起一条Query请求,监听客户端的‘连接管理模块’接收请求
1.2将请求转发到‘连接进/线程模块’
1.3调用‘用户模块’来进行授权检查
1.4通过检查后,‘连接进/线程模块’从‘线程连接池’中取出空闲的被缓存的连接线程和客户端请求对接,如果失败则创建一个新的连接请求
2.处理
2.1先查询缓存,检查Query语句是否完全匹配,接着再检查是否具有权限,都成功则直接取数据返回
2.2上一步有失败则转交给‘命令解析器’,经过词法分析,语法分析后生成解析树
2.3接下来是预处理阶段,处理解析器无法解决的语义,检查权限等,生成新的解析树
2.4再转交给对应的模块处理
2.5如果是SELECT查询还会经由‘查询优化器’做大量的优化,生成执行计划
2.6模块收到请求后,通过‘访问控制模块’检查所连接的用户是否有访问目标表和目标字段的权限
2.7有则调用‘表管理模块’,先是查看table cache中是否存在,有则直接对应的表和获取锁,否则重新打开表文件
2.8根据表的meta数据,获取表的存储引擎类型等信息,通过接口调用对应的存储引擎处理
2.9上述过程中产生数据变化的时候,若打开日志功能,则会记录到相应二进制日志文件中
3.结果
3.1Query请求完成后,将结果集返回给‘连接进/线程模块’
3.2返回的也可以是相应的状态标识,如成功或失败等
3.3‘连接进/线程模块’进行后续的清理工作,并继续等待请求或断开与客户端的连接
4:小结
1:用户模块校验用户,然后去线程连接池拿线程(连接足够的话),找命令分发器,到查询缓存模块查SQL语句,如果没有,走命令解析器,然后访问控制模块,设定用户的权限,设定好后走表管理模块,获取锁和缓存,然后获取各种信息,存储的方式:存储引擎,从存储引擎获取数据,然后返回
阅读全文
0 0
- MySQL的执行流程
- MySQL 查询执行流程
- mysql audit 执行流程
- MySQL执行流程
- Mysql 5.7sql执行流程
- mysql用户SQL执行流程
- PsLookupProcessByProcessId的执行流程
- struts2的执行流程
- struts2的执行流程
- SSH 的执行流程
- jsp的执行流程
- memcached的执行流程
- libmemcached的执行流程
- struts2的执行流程
- struts2的执行流程
- Struts2的执行流程
- ci的执行流程
- struts2的执行流程
- 虚拟多Mac地址工具Multimac
- 梅涛:深度学习敲敲视觉理解中的“钉子”
- GNU与GPL
- maven全局配置文件settings.xml详解
- 大数据早报:亚马逊将取代谷歌 阿里云发布弹性云服务器神龙(10.13)
- MySQL的执行流程
- 我的iOS11及iPhoneX适配(二)
- 百钱买百鸡
- Android RecyclerView与CardView的配合使用
- Linux进程间通信——使用共享内存
- BootStrap Modal下,按钮无响应的问题
- Heads Up Notification (setFullScreenIntent not work on Mate8)
- es6里面的promise不捕获异常老是报unhandledRejection错,有啥办法不让它报么?
- WDCP上配置SSL证书即https 2017-08-28 百度总结 操作环境:linux的WDCP操作面板(没有操作面板就在命令行操作) wdcp 安装ssl证书教程实现https访问 1.申请