前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探究MySQL各类文件

探究MySQL各类文件

作者头像
陈琛
发布2020-06-12 16:12:11
6110
发布2020-06-12 16:12:11
举报
文章被收录于专栏:陈琛的Redis文章

前言

前两篇我们了解到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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 学习Java的小姐姐 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 错误日志
  • 二进制日志
  • 表空间
  • 重做日志文件
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档