MySQL各模块工作配合

DBA技术栈(一):Mysql简介和架构基本组成_mysql技术栈 不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备 ,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。master.info 文件存在于 Slave 端的数据目录下,里面存放了该 Slave 的 Master 端的相关信息,包括 Master 的主机地址,连接用户,连接密码,连接端口,当前日志位置,已经读取到的日志位置等信息。,开启二进制日志功能会占用磁盘空间,并且会影响MySQL的性能。 阅读详情

MySQL各模块工作配合


在了解了 MySQL 的各个模块之后,我们再看看 MySQL 各个模块间是如何相互协同工作的 。接下来,我们通过启动 MySQL,客户端连接,请求 query,得到返回结果,最后退出,这样
一整个过程来进行分析。


当我们执行启动 MySQL 命令之后, MySQL 的初始化模块就从系统配置文件中读取系统参数和命令行参数,并按照参数来初始化整个系统,如申请并分配 buffer,初始化全局变量,
以及各种结构等。同时各个存储引擎也被启动,并进行各自的初始化工作。当整个系统初始化结束后,由连接管理模块接手。连接管理模块会启动处理客户端连接请求的监听程序, 包
括 tcp/ip 的网络监听,还有 unix 的 socket。这时候,MySQL Server 就基本启动完成,准备好接受客户端请求了。


当连接管理模块监听到客户端的连接请求(借助网络交互模块的相关功能),双方通过Client & Server 交互协议模块所定义的协议 “寒暄”几句之后,连接管理模块就会将连接
请求转发给线程管理模块,去请求一个连接线程。

 

线程管理模块马上又会将控制交给连接线程模块,告诉连接线程模块:现在我这边有连接请求过来了,需要建立连接,你赶快处理一下。连接线程模块在接到连接请求后,首先会检查当前连接线程池中是否有被 cache 的空闲连接线程,如果有,就取出一个和客户端请求连接上,如果没有空闲的连接线程,则建立一个新的连接线程与客户端请求连接。当然, 连接线程模块并不是在收到连接请求后马上就会取出一个连接线程连和客户端连接,而是首先通过调用用户模块进行授权检查,只有客户端请求通过了授权检查后,他才会将客户端请求和负责请求的连接线程连上。


在 MySQL 中,将客户端请求分为了两种类型:一种是 query,需要调用 Parser 也就是Query 解析和转发模块的解析才能够执行的请求;一种是 command,不需要调用 Parser 就可
以直接执行的请求。如果我们的初始化配置中打开了 Full Query Logging 的功能,那么Query 解析与转发模块会调用日志记录模块将请求计入日志,不管是一个 Query 类型的请求还是一个 command 类型的请求,都会被记录进入日志,所以出于性能考虑,一般很少打开 FullQuery Logging 的功能。


当客户端请求和连接线程“互换暗号(互通协议) ”接上头之后,连接线程就开始处理客户端请求发送过来的各种命令(或者 query),接受相关请求。它将收到的 query 语句转
给 Query 解析和转发模块, Query 解析器先对 Query 进行基本的语义和语法解析,然后根据命令类型的不同,有些会直接处理,有些会分发给其他模块来处理。如果是一个 Query 类型的请求,会将控制权交给 Query 解析器。 Query 解析器首先分析看是不是一个 select 类型的 query,如果是,则调用查询缓存模块,让它检查该 query 在query cache 中是否已经存在。如果有,则直接将 cache 中的数据返回给连接线程模块,然后通过与客户端的连接的线程将数据传输给客户端。如果不是一个可以被 cache 的 query类型,或者 cache 中没有该 query 的数据,那么 query 将被继续传回 query 解析器,让 query解析器进行相应处理,再通过 query 分发器分发给相关处理模块。


如果解析器解析结果是一条未被 cache 的 select 语句,则将控制权交给 Optimizer,也就是 Query 优化器模块,如果是 DML 或者是 DDL 语句,则会交给表变更管理模块,如果是一些更新统计信息、检测、修复和整理类的 query 则会交给表维护模块去处理,复制相关的query 则转交给复制模块去进行相应的处理,请求状态的 query 则转交给了状态收集报告模块。实际上表变更管理模块根据所对应的处理请求的不同,是分别由 insert 处理器、 delete处理器、update 处理器、create 处理器,以及 alter 处理器这些小模块来负责不同的 DML和 DDL 的。在各个模块收到 Query 解析与分发模块分发过来的请求后,首先会通过访问控制模块检查连接用户是否有访问目标表以及目标字段的权限,如果有,就会调用表管理模块请求相应的表,并获取对应的锁。表管理模块首先会查看该表是否已经存在于 table cache 中,如果已经打开则直接进行锁相关的处理,如果没有在 cache 中,则需要再打开表文件获取锁, 然后将打开的表交给表变更管理模块。


当表变更管理模块“获取”打开的表之后,就会根据该表的相关 meta 信息,判断表的存储引擎类型和其他相关信息。根据表的存储引擎类型,提交请求给存储引擎接口模块, 调用对应的存储引擎实现模块,进行相应处理。不过,对于表变更管理模块来说,可见的仅是存储引擎接口模块所提供的一系列 “标准”接口,底层存储引擎实现模块的具体实现,对于表变更管理模块来说是透明的。他只需要调用对应的接口,并指明表类型,接口模块会根据表类型调用正确的存储引擎来进行相应的处理。


当一条 query 或者一个 command 处理完成(成功或者失败)之后,控制权都会交还给连接线程模块。如果处理成功,则将处理结果(可能是一个 Result set,也可能是成功或者失败的标识)通过连接线程反馈给客户端。如果处理过程中发生错误,也会将相应的错误信息发送给客户端,然后连接线程模块会进行相应的清理工作,并继续等待后面的请求,重复上面提到的过程,或者完成客户端断开连接的请求。


如果在上面的过程中,相关模块使数据库中的数据发生了变化,而且 MySQL 打开了 binlog 功能,则对应的处理模块还会调用日志处理模块将相应的变更语句以更新事件的形式记
录到相关参数指定的二进制日志文件中。在上面各个模块的处理过程中,各自的核心运算处理功能部分都会高度依赖整个 MySQL的核心 API 模块,比如内存管理,文件 I/O,数字和字符串处理等等。

 

 

了解到整个处理过程之后,我们可以将以上各个模块画成如图 的关系图:

UNDO

 

【Python】从入门到上头—mysql数据库操作模块mysql-connector和PyMySQL应用场景 (15) PyMySQL 是在` Python3.x 版本中用于连接 MySQL 服务器的一个库`,Python2 中则使用 mysqldb。 阅读详情

相关推荐

MySQL各个模块的关系图

MySQL各个模块的关系图、Blog中的链接图片,请各位放心下载

8.mysql模块

常见的数据库有下面几个其中MySQL与Mongodb有免费版(社区版),所以这两个数据库用的比较多MySQL,Oracle,SQL Server属于传统型数据库,三者用法比较类似Mongodb属于新型数据库,在一定程度上弥补了传统型数据库的缺陷传统型数据库的数据组织结构与Excel类似,Excel的组织结构是 工作簿,工作表,数据行,数据列,对应到传统型数据库中就是 数据库 database(对应工作簿),数据表 table(对应工作表),数据行 row(对应数据行),字段 field(对应数据列)

potato123232的博客 657

mysql项目的一些模块

这个写的是一些项目的模块,由于记不住所以这样记着

Node.js中MySQL模块入门教程:从安装到基本使用全面解析,助力开发更稳定高效

MySQL模块的基本使用

weixin_43263566的博客 1573

【C++】lambda表达式

本篇文章我们要学习的是lambda表达式,它是C++11新增的一种特别方便的语法,相较于之前的函数指针以及仿函数都方便了不少,下面就让我们一起来学习吧。

malloc不出对象的博客 2630

零代码构建AI智能体:COZE可视化工作流实战指南

AI智能体(AI Agent)是当前人工智能领域的重要发展方向,它通过模块化设计和工作流驱动,使大语言模型从被动对话转向主动执行。其核心原理在于将复杂的任务分解为可规划、可执行的步骤,并调用外部工具(插件)完成闭环。这一技术价值在于显著降低了自动化流程的开发门槛,让非程序员也能构建实用的数字助手。典型的应用场景包括智能客服、内容自动生成、数据分析和跨系统业务流程自动化。本文以COZE平台为例,深入解析如何通过其直观的可视化界面和丰富的插件生态,像搭积木一样快速搭建如“早安简报生成器”等实用智能体,并分享指令

468

数据库-mysql、第三方模块

数据库 1.数据库的基本概念 1.1什么是数据库 数据库(database)是用来组织、存储和管理数据的仓库。 用户可以对数据库中的数据迚行新增、查询、更新、删除等操作。 1.2常见的数据库及分类 1.MySQL 数据库(目前使用最广泛、流行度最高的开源免费数据库;Community + Enterprise) 2.Oracle 数据库(收费) 3.SQL Server 数据库(收费) 4.Mongodb 数据库(Community + Enterprise) 其中,MySQL、Oracle、SQL Ser

h_jQuery的博客 975

SVPWM分析、各个扇区详细计算以及Matlab仿真

SVPWM分析以及各个扇区详细计算以及Matlab仿真说明目的两电平逆变器拓扑空间矢量扇区判断扇区内如何发波?矢量作用时间计算矢量切换时间的计算Simulink仿真/基于Matlab-R2014a版本 说明 第一次发文章,不太会用Markdown,word编辑的公式复制过来有些是乱码,因此都贴图了。 另外,本文公式和图片比较多,编辑工作量比较大,比较辛苦,转载的话,请注明出处,谢谢。 目的 由于在...

michaelf的博客 12万+

在项目中操作MySQL---mysql模块

在项目中操作数据库的步骤 ①安装操作MySQL数据库的第三方模块(mysql) ②通过mysql模块连接到MySQL数据库 ③通过mysql模块执行SQL语句 1. 安装mysql模块 mysql模块是托管于npm上的第三方模块。它提供了在Node.js项目中连接和操作MySQL数据库的能力 想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包: npm install mysql 2.配置mysql模块 在使用mysql模块操作MySQL数据库之前,必须先对mysql模块进行必要的配

m0_51195865的博客 1959

Winform使用TreeView控件实现带复选框的三态树

刚接触c#,项目中用到Treeview实现三态,即选中、未选中、半选中状态,并且要求父子节点选择联动,效果类似下图网上有很多例子,于是研究了一下,结合网上大佬们的例子,所以在这里记录一下。首先新建一个Winform工程拖个TreeView控件,然后运行。。。嗯。。。加点数据吧。private void CreateTree() { TreeNode anime = new TreeNode...

laoyezha的博客 2万+

【IPAM】Netbox docker模式版本升级

NETBOX 是一个开源的网络资源管理系统,主要用于管理 IP 地址、机架、设备、接口等网络资源信息。下面是 NETBOX 的功能、优点和缺点的详细介绍。

u012153104的博客 1329

MySQL各逻辑模块工作配合

在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的。接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后退出,这样一个过程下来进行分析。 1、  当我们执行启动MySQL命令之后,MySQL的初始化模块就从系统配置文件中读取系统参数和命令行参数,并按照参数来初始化整个系统,如申请并分配buffer

奋斗的小青年 855

Oracle EBS AP 应付模块核心实现逻辑(极简骨架 + 分层拆解 + 业务流转 + 分录 + 核心表)

Oracle EBS AP应付模块采用四层逻辑架构:1)主数据层统一管控供应商基础信息;2)发票负债层通过三单匹配校验生成应付账款;3)付款核销层实现负债冲减;4)SLA层自动生成财务凭证。核心流程包括发票验证(匹配PO/收货单)、付款核销(全额/部分冲账)、会计分录自动生成(通过SLA引擎)。模块严格遵循"无匹配不负债、无验证不入账"原则,与采购、库存等模块深度集成,实现从供应商创建到付款核销的完整业务闭环,确保应付账款准确性和审计追溯能力。

金牌架构师 439

mysql 配合,MySQL逻辑模块工作配合

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 启动MySQL 1、初始化模块执行存储引擎初期化执行 2、1中执行完成后 ----连接管理模块接手 3、连接管理模块启动处理客户端连接请求的监听程序(tcp/ip 网络监听、unix 的socket) 4、启动完成、准备接欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入启动MySQL1、初始...

weixin_29487179的博客 142

一文入门车载以太网:从原理到实战,看完就能上手开发

新手选型遵循“适配场景、兼顾成本、优先车规”的原则:普通场景(车载娱乐、普通诊断):100Base-T1 PHY(LAN8742)+ 非TSN交换机(SJA1105)+ STM32H743 ECU + 普通STP线缆;ADAS场景:1000Base-T1 PHY(TJA1101)+ TSN交换机(SJA1110)+ NXP S32G399 ECU + 高抗干扰STP线缆;避免过度选型:如普通娱乐场景无需选择TSN交换机、ASIL-B级芯片,否则会增加成本;

getusushu的博客 317

【异常】解决 Claude Code 及第三方插件提示 “API Error: 404“ 的配置修复指南

在使用 Claude 相关的 CLI 工具(如)或 IDE 插件进行开发辅助时,配置错误的模型参数是导致连接失败的常见原因。本文将针对这一典型报错进行复盘与解决。

奶爸的编程之路,也就一周冷个三天 7746

MySQL逻辑模块工作配合

启动MySQL 1、初始化模块执行&&存储引擎初期化执行 2、1中执行完成后 ---->连接管理模块接手 3、连接管理模块启动处理客户端连接请求的监听程序(tcp/ip 网络监听、unix 的socket) 4、启动完成、准备接收请求 客户端连接 5、监听到客户端的连接请求(运用网络交互模块中相关功能)---->通过Client & Server 交互协议模块协议----通讯匹配----> 6、连接管理模块----请求转发---->线程管理模块----控制转交---->连接线程模块 7、连接线程模块----

高级全栈工程师 1051

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MYSQL入门学习之二十五:MySQL各模块工作配合

 下图显示了MySQL 各个模块间是如何相互协同工作的: 1、执行启动MySQL 命令之后,MySQL 的初始化模块就从系统配置文件中读取系统参数和命令行参数,并按照参数来初始化整个系统,如申请并分配buffer,初始化全局变量,以及各种结构等。同时各个存储引擎也被启动,并进行各自的初始化工作。 2、当整个系统初始化结束后,由连接管理模块接手。连接管理模块会启动处理客户端连接

yangshijin1988的专栏 490

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL系统架构 读自《MySQL性能调优与架构设计》

一、MySQL逻辑模块组成   mysql可以看成是二层架构,第一层叫SQLLayer,这一部分主要功能是完成mysql数据库系统处理底层数据之前的所有的准备工作,包括权限判断、sql解析、执行计划优化、querycache的处理等; 第二层是存储引擎层(StorageEngineLayer),这一层才是数据库系统数据存取操作的实现,是由多种存储引擎共同完成。 看起来结构简单,...

通往架构师的成长学习之路 411

php搭档,【Linux】LAMP架构之以模块方式让php和httpd搭档工作

LAMP就是:Linux,Apache,Mysql,PHP的首字母缩写。实验环境Linux:CentOS-3 2.6.32-431.el6.x86_64Apache:httpd-2.4.16.tar.gzMysql :mysql-5.5.24.tar.gzPHP :php-5.6.11.tar.bz2安装顺序为:Apahce --> Mysql --> PHP实验步骤方便实验先关...

weixin_31787547的博客 149

04、MySQL-------MyCat实现分库分表

MySQL-------MyCat实现分库分表

Java 领域技术分享 1840

免费送源码:Java+ssm+MySQL SSM高校毕业生求职信息系统 计算机毕业设计原创定制

本设计主要实现集人性化、高效率、便捷等优点于一身的高校毕业生求职信息系统,完成招聘信息、投递简历、求职信息、面试邀约、学生就业等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。高校毕业生求职信息系统使用Java语言,采用基于 MVVM模式的SSM技术进行开发,使用 Eclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合前台HTML+CSS 技术

VX_CXsjNo1的博客 1091

Windows XP/2003下Apache+PHP+MySQL+Zend Optimizer+phpMyAdmin安装配置

转载自:      http://www.360doc.com/content/11/0406/16/42286_107610571.shtml       Windows XP下Apache+PHP+MySQL+Zend Optimizer+phpMyAdmin安装配置 2009年07月09日 星期四 下午 05:42 一、软件准备 : Apache(2.2.11): ...

onedada的博客 238
上一篇: pycharm使用技巧
下一篇: 统计列表元素出现个数
纠结的逗号
博客等级 码龄10年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纠结的逗号

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值