前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql执行过程

mysql执行过程

作者头像
dys
发布2018-04-02 17:10:15
2.9K0
发布2018-04-02 17:10:15
举报
文章被收录于专栏:性能与架构性能与架构

启动

初始化模块读取系统参数和命令行参数,初始化整个系统,例如分配buffer、初始化全局变量,同时,启动各存储引擎

启动完成后,交给连接管理模块接手,连接管理模块启动端口监听程序,准备好接收客户端请求

接收请求

连接管理模块接收到客户端请求后,按照交互协议进行沟通,然后把连接请求交给线程管理模块,去请求一个线程

线程管理模块接到请求后,先进行授权检查,授权通过后,先检查连接线程池中是否有被缓存的空闲连接线程,如果有,取出一个和客户端请求连接上,如果没有,建立一个新的连接线程

处理请求

客户端请求和连接线程对接后,开始处理请求

如果客户端请求是query类型,交给query解析器,解析器首先分析是否为select类型,如果是,调用缓存查询模块,如果已经被缓存,直接将cache中的数据返回给连接线程模块,然后传输给客户端,否则,解析器会通过分发器交由不同模块处理

如果是没被缓存的select,交给优化器模块,如果是表内容或结构更改,交给表变更管理模块,如果是一些更新统计信息、检测、修复、整理之类的,交给表维护模块,如果是复制相关的,交给复制模块,请求状态的就交给状态收集报告模块

各模块收到请求后,先检查用户是否有目标表的权限,如果有,查看此表是否在table cache中,没在cache中就先打开表,取到表后获取对应的锁

表变更管理模块打开表后,会根据表的meta信息,判断表的存储引擎类型和其他相关信息,调用相应存储引擎接口处理

完成请求

连接线程模块将处理结果返回给客户端,然后进行相应的清理工作,开始等待后面的请求

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档