目录
前言
前两篇我们了解到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这种操作,即使对数据库没有造成影响,那么也会被记录到二进制日志中。
这段是不是特别拗口,不咋能理解,没事,我们实际操作下。
首先二进制日志文件在默认情况下并没有启动,需要手动指定参数来启动。这是不是就意味着开启这个选项会对数据库的整体性能有影响?但是根据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。
结束
码字不易,请多多关注哦。