探究MySQL各种文件

前言

前两篇咱们了解到MySQL的总体架构,其分为了四层,包括网络链接层,核心层,存储引擎层,物理层,以及各层的做用。另外还知道了InnoDB存储引擎层的架构,包括缓存池和线程。数据库

不明白的,请移步上两篇哦。今天咱们来看构成MySQL数据库和InnoDB存储引擎表的各种文件。缓存

参数文件

告诉MySQL实例启动时在哪里能够找到数据库文件,以及指定某些初始化参数,如某种内存结构的大小设置。服务器

那上面是参数呢?简单来讲,能够把数据库参数当作一个键值对(key/value),好比innodb_buffer_pool_size=1G。那这些键值对都存放在哪里了呢?答案揭晓,my.ini里面存储了大量键值对(key/value),且位于MySQL的安装目录,以下图。网络


咱们打开这个文件看一下,里面都是键值对的形式。若是咱们想要修改某个值,直接在这边修改,而且重启便可。架构


日志文件

用来记录MySQL实例对某种条件作出响应时写入的文件,包括以下四种。性能

错误日志

记录MySQL的启动,运行和关闭中的错误信息。咱们先来看一下文件存储的位置。测试


咱们去相应路径下查看该文件,能够发现出错信息。因此当MySQL数据库不能正常启动的时候,第一个必须查找的文件就是错误日志文件。线程


二进制日志

记录对MySQL数据库进行更改的全部操做,可是不包括select和show这类操做,由于这类操做对数据自己没有影响。然而,若是是update或delete这种操做,即便对数据库没有形成影响,那么也会被记录到二进制日志中。日志

这段是否是特别拗口,不咋能理解,没事,咱们实际操做下。code

首先二进制日志文件在默认状况下并无启动,须要手动指定参数来启动。这是否是就意味着开启这个选项会对数据库的总体性能有影响?可是根据MySQL官方手册中的测试代表,开启二进制日志会使性能降低1%,是可接受的范围。

是否降低1%,这个数字咱们也无从考证,可是要晓得一点,就是会有影响,但问题不大。毕竟要在每次insert,delete,update操做后,记录日志,这确定是要时间和空间的损耗的。

那么开始表演吧。

首先,咱们先开启二进制配置,上面参数文件有说过my.ini里面存储的各类配置信息的键值对,只须要在该文件里面添加log-bin,指定了log的名称为主机名-bin,后缀为序列号,所在的路径为数据库所在的路径。

接着,重启服务器,步骤以下,重启以后,咱们能够看到相应的文件。




最后,在准备工做好了以后,咱们先来查询test2的数据,而后看一下那两个文件的大小有没有变化,很明显大小仍是跟以前的同样。



再来写一个update语句,咱们能够看到影响的行数为0,可是那两个文件的大小有增长了。



InnoDB的存储引擎文件

表空间

InnoDB将存储的数据按表空间进行存放。在默认配置中会有一个初始大小为10MB,名为ibdata1的文件,其为全部表的表空间。固然也能够经过innodb_file_per_table设置每一个表一个独立的表空间,命名规则为.ibd。是否很熟悉?没错,这就是咱们上篇说到的innodb表存储在硬盘的文件之一。


重作日志文件

若是断电时,InnoDB会经过重作日志来恢复到断电前的状态,保证数据的完整性。

每一个InnoDB存储引擎至少有一个重作日志组group,和两个文件ib_logfile0和ib_logfile1。

他们两个大小同样,而且以循环写入的方式运行,即先写重作日志1,等到写满时,会切换到重作日志2,等到日志2写满时,再次切换到重作日志1。


结束

码字不易,请多多关注哦。

相关文章
相关标签/搜索