史上最全MySQL架构,助你深度掌握MySQL开发管理,赢在大数据时代

在客户端请求系统状态的时候,系统状态模块主要负责将各种状态的数据返回给用户。最常用的一-些查询状态的命令包括show satus, show variables等,都是通过这个模块负责返回的。

14.表管理器

表管理器主要就是维护系统生成的表文件。例如,MyISAM存储引擎类型表生成的是fm文件、MYD文件以及MYI文件,表管理器的工作就是维护这些文件,将各个表结构的信息缓存起来,另外该模块还管理表级别的锁。

15.日志记录模块

日志记录模块主要负责整个数据库逻辑层的日志文件,其中包含错误日志,二进制日志,以及慢查询日志等。

16.复制模块

复制模块分为Master 模块和Slave 模块两部分。Master 模块主要负责复制环境中读取Master端的binary日志,以及Slave端的I/0 线程交互等工作。Slave 模块主要有两个线程,一个负责从Master请求和接收binary日志,并写入本地I/0线程:另一个从relay log读取日志事件,然后解析成可以在Slave端执行的命令,然后交给Slave端的SQL线程。

17.存储引擎接口模块

MySQL实现了其数据库底层存储引擎的插件式管理,将各种数据处理高度抽象化。

MySQL 物理文件的组成

=============

MySQL的物理文件包括日志文件、数据文件和其他文件,下 面将详细介绍这些文件的义和作用。

1、日志文件

在MySQL数据库中,日志文件主要记录了数据库操作信息和错误信息。常用的日志文件包括错误日志、二进制日志、查询日志、慢查询日志和InnoDB引擎在线Redo日志等。

(1)错误日志: Error Log

错误日志文件记录了MySQL Server运行过程中遇到的所有严重的错误信息,以及MySQL每次启动和关闭的详细信息。默认情况下错误日志功能是关闭的,启动时要重新配置——og- er(-file_ name]选项,修改错误日志存放的目录和文件名称。

(2)二进制日志: Binary Log

二进制日志文件就是常说的binlog。二进制日志记录了MySQL所有修改数据库的操作,然后以二进制的形式记录在日志文件中,其中还包括每条语句所执行的时间和所消耗的资源,以及相关的事务信息。

默认情况下二进制日志功能是开启的,启动时可以重新配置-log_bin[-file. _name]选项,修改二进制日志存放的目录和文件名称。

(3)查询日志: Query Log

默认的查询日志文件是hostname.log.查询日志记录所有的查询操作,包括所有的select操作信息,体积比较大,开启后对性能有较大的影响,可以通过“–log[-file_ name]" 选项开启。如果需要跟踪某些特殊的SQL性能问题,可以短暂地打开该功能。

(4)慢查询日志: Slow Query Log

慢查询日志是指所有SQL 执行的时间超过long_ query, fime变量的语句和达到min_ _examined_ row_ limit 条距离的语句。用户可以针对这部分语句性能调优。慢查询日志通过

设置–log-slow_ queries[-file_ name]选项开启后,将记录日志所在的路径和名称。MySQL系统默认的慢查询日志的文件名是hostname-slow.log,默认目录也是data目录。查看慢查询日志可以采用mysqldumpslow命令对慢查询日志进行分析。

(5) InoDB引擎在线Redo日志: InnoDB redo Log

InnoDB引擎在线Redo日志记录了InnoDB所做的所有物理变更和事务信息。通过Redo日志和Undo信息,InnoDB 大大地加强了事务的安全性。InnoDB 在线Redo日志默认存放在data目录下面,可以通过设置innodb. _log_ group. home. _dir 选项来更改日志的存放位置,通过innodb. _log_ files. _in. group 选项来设置日志的数量。

2、数据文件

MySQL数据库会在data目录下面建立一个以数据库为名字的文件夹,用来存储数据库中的表文件数据。不同的数据库引擎,每个表的扩展名也不一一样, 例如,MyISAM引擎用“.MYD"作为扩展名,InnoDB 引擎可以用“.ibd”作为扩展名,CSV引擎使用“.csv" 扩展名。

(1). “.frm"文件

无论是哪种存储引擎,创建表之后就一定会生成- 一个以表名命名的“.frm"文件。fm文

件主要存放与表相关的数据信息,主要包括表结构的定义信息。当数据库崩溃时,用户可以通

过fm文件来恢复数据表结构。

(2).“.MYD" 文件

MyISAM存储引擎创建表时,每-一个MyISAM类型的表都会有一个“.MYD”文件与之对应。“MYD"文件主要用来存放数据表的数据文件。

(3)“.MYI" 文件

每一个MyISAM类型的表都会有一个“.MYD"文件和-一个“.MYI"文件,对于MyISAM存储引擎来说,可以被缓存的内容主要就是源于“.MYI”文件中,“.MYI"文件中主要用来存储表数据文件中任何索引的数据树。

(4)“.ibd" 文件和“.ibdata"文件

这两种文件主要是用来存储InnoDB 存储引擎的数据,其中主要包括索引信息。InnoDB存储引擎采用这两种数据文件,主要是因为InnoDB存储引擎的存储方式能够通过配置来决定是采用共享表空间,还是采用独享表空间的存储方式存储数据。

如果采用共享表空间的方式存储数据,则会采用ibdata文件来存储,所有的表共同使用一个或者多个ibdata 文件。如果采用独享表空间的方式存储数据,则会采用ibd文件来存储。

共享表空间存储通过innodb _data. home. dir 和innodb_ data_ file_ path两个参数共同配置组成,innodb_ data home, dir 参数配置数据存放的总目录,innodb data_ file_ path 参数配置每一个文件的路径及文件名称。如果需要添加新的ibdata文件,则需要在innodb data_ file path 参数后面配置,然后重新启动服务器才能够生效。

3、其他文件

MySQL数据库系统除了日志文件、数据文件外,还包括其他的一些文件。 例如系统配置文件、pid文件、socket 文件等等。
MySQL系统配置文件一般都在“etc/my.cnf" 中。pid 文件类似于UnixLinux操作系统下面的进程文件,MySQL服务器的pid文件用来存放自己的进程ID。MySQL 服务器启动后,socket文件自动生成,该文件主要用来连接客户端。
以上就是小编整理的MySQL架构简介,只是个人的一些见解,哪里有不准确的地方,希望各位大佬多多批评指正,咱们共同进步。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

图片转存中…(img-1cRFoq2R-1710921226585)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-kX5zNhxT-1710921226585)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值