通过《MySQL体系结构详解》一节的介绍,大家对 MysqL 的整体架构已经有了一定的了解,本节我们主要介绍数据库的具体工作流程。下面是一张简单的数据库执行流程图:

下面从数据库架构的角度介绍数据库的工作流程:

1. 连接层

1)连接处理:客户端同数据库服务层通过连接管理模块建立 TCP 连接,并请求一个连接线程。如果连接池中有空闲的连接线程,则分配给这个连接,如果没有,在没有超过最大连接数的情况下,创建新的连接线程负责这个客户端。

连接管理模块负责监听对 MysqL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MysqL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。而连接线程的主要工作就是负责 MysqL Server 与客户端的通信,接收客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的缓存等。

2)授权认证:在真正的操作之前,还需要调用用户模块进行授权检查,来验证用户是否有权限。通过后,连接线程开始接收并处理来自客户端的请求。

用户模块所实现的功能,主要包括用户的登录连接权限控制和用户的授权管理。它就像 MysqL 的大门守卫一样,决定是否给来访者“开门”。

在 MysqL 中,将客户端请求分为了两种类型:一种是 query(sql语句),需要调用 Parser(查询解析器)才能够执行的请求;一种是 command(命令),不需要调用 Parser 就可以直接执行的请求。

2. sql层

连接线程接收到 sql 语句之后,将语句交给 Parser 进行语法分析和语义分析。之后根据类型的不同,有些会直接处理,有些会分发给其他模块来处理。

如果是一个 query 类型的请求,会将控制权交给 Query 解析器。

Query 解析器首先分析是不是一个 Select 类型的 query。是则调用查询缓存模块,让它检查该 query 在 Query Cache(查询缓存)中是否已经存在,如果有结果可以直接返回给客户端。没有结果则将控制权交给 Optimizer(查询优化器),进行查询的优化。

如果是表变更语句,则分别交给 Insert 处理器、Delete 处理器、Update 处理器、Create 处理器,以及 Alter 处理器这些小模块来负责。

3. 存储引擎层

在各个模块收到 Query 解析或其它模块分发过来的请求后,首先会通过访问控制模块检查连接用户是否有访问目标表以及目标字段的权限,如果有,就会调用表管理模块请求相应的表,并获取对应的锁。

表变更管理模块主要是负责完成一些 DML 和 DDL 的 query,如:update,delete,insert,create table,alter table 等语句的处理。

当表变更管理模块“获取”打开的表之后,就会根据该表的相关信息,判断表的存储引擎类型和其他相关信息。根据表的存储引擎类型,提交请求给存储引擎接口模块,调用对应的存储引擎实现模块,进行相应处理。

不过,对于表变更管理模块来说,可见的仅是存储引擎接口模块所提供的一系列“标准”接口,底层存储引擎实现模块的具体实现,对于表变更管理模块来说是透明的。他只需要调用对应的接口,并指明表类型,之后接口模块会根据表类型调用正确的存储引擎来进行相应的处理。

当一条 query 或者一个 command 处理完成(成功或者失败)之后,控制权都会交还给连接线程模块。

如果处理成功,则将处理结果(可能是一个 ResultSet,也可能是成功或者失败的标识)通过连接线程反馈给客户端。

如果处理过程中发生错误,也会将相应的错误信息发送给客户端,然后连接线程模块会进行相应的清理工作,并继续等待后面的请求。之后重复上面的过程,或者与客户端断开连接,最后关闭连接,释放连接线程。

总结

以上是编程之家为你收集整理的MySQL工作(执行)流程全部内容,希望文章能够帮你解决MySQL工作(执行)流程所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

mysql有程序过程吗_MySQL工作(执行)流程相关推荐

  1. PHP中mysql查询全部过程_PHP到MySQL数据查询过程概述_MySQL

    摘要 本文概述了从PHP层发起mysql查询请求到mysql server 返回结果集的工作流程,并简单描述了各层可能涉及到的动作和组件.从全局把握整个交互过程. PHP层到MySQL层 Php到sq ...

  2. mysql 5.6自动任务_mysql定时执行某任务

    查看event是否开启: show variables like '%sche%'; 将事件计划开启: set global event_scheduler=1; 关闭事件任务: alter even ...

  3. MySQL 文件结构、逻辑架构及 sql 执行流程分析作者:Java后端架构

    1.MySQL 文件说明 1.1 MySQL 文件夹文件 linux 服务器上 MySQL 安装好之后都有如下文件: auto.cnf:每一个 MySQL 实例都有一个唯一 ID 蓝色文件夹:表示数据 ...

  4. 详解MySQL的逻辑架构和SQL语句执行流程

    文章目录 1. 逻辑架构 1.1 连接层 1.2 服务层 1.3 引擎层 1.3.1 InnoDB 存储引擎 1.3.2 MyISAM 存储引擎 1.3.3 其他存储引擎 1.4 存储层 3. SQL ...

  5. Go003:Go程序开发的步骤+Golang执行流程分析

    开发的步骤 一.开发这个程序页目时,go的目录结构怎么处理 二.开发一个hell.go程序 对上图的说明 1.go文件的后缀是.go 2.package main 表示hello.go文件所在的包是m ...

  6. mysql脚本文件捕捉错误_MySQL脚本执行错误

    MySQL执行脚本发生如下错误时: ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16. Cr ...

  7. mysql 反斜杠 转义_MySQL中执行sql语句反斜杠需要进行转义

    最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是开始debug,最后发现,是由于备份的sql语句在还原时,反斜杠(\)被mysql吃掉了.本文对反斜杠和顺斜杠进行了测试,并给出了解决方 ...

  8. mysql命令查看过程内容_mysql查看存储过程命令

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql脚本编写与案例_MySQL语句执行顺序和编写顺序实例解析

    select语句完整语法: SELECT DISTINCT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT 执行顺序: from →join →on ...

  10. mysql数据库程序开机_数据库的启动流程和关闭介绍/mysql初始化配置文件

    一 启动 数据库启动的最终结果就是实列的启动,就是守护进程mysqld启动,还有线程,预分配的内存结构 我们说musqld不是自助启动的,他是mysqld_safe这个脚本拉起来的 mysql.ser ...

最新文章

  1. [学习笔记]最小圆覆盖
  2. POJ1038 Bugs Integrated, Inc.
  3. python常见的文件操作:打开、创建等
  4. 新CIO:Mark Schwartz认为的领先IT
  5. 科研绘图工具软件_如何在Windows 10 Mail中使用绘图工具
  6. 自定义Gradle Plugin
  7. 海底捞、百果园、大娘水饺凭什么可以疯狂扩张门店?
  8. 【java笔记】数组概念初始化及相关操作
  9. 叹服,华为高工手写344页高性能Java架构核心原理实战架构手册
  10. 入门单反相机最最基础知识新人详解
  11. layui 模板判断_layui之模板弹框
  12. l/min是什么单位
  13. VUE2.0 脚手架搭建项目,如何配置本地IP地址访问项目,详解
  14. MySQL完整笔记 总结
  15. 微信网页扫码支付(公众号)JAVA实现
  16. linux ls和ll命令学习小结
  17. 单项选择器radio-group
  18. 程序设计与算法(三)期末考试之013:编程填空:三生三世
  19. 黑马视频学习笔记-字符串
  20. 双机热备份-VRRP

热门文章

  1. 优先队列重载(理解)
  2. python处理文件效率对比awk
  3. 自从有了计算机和网络才有信息技术,2015年信息技术会考模拟选择题6(俞同明版)...
  4. fht算法c语言源码,sklearn中LinearRegression使用及源码解读
  5. java composite 模式_《JAVA设计模式》中的组合模式Composite
  6. SpringBoot 启动过程,你不知道的秘密!
  7. spring cloud分布式微服务-配置中心git示例
  8. Percona PT-kill重构版(PHP)
  9. PyCharm下载及使用
  10. RocketMQ类关系图之broker/store