MySQL高级进阶(四)、文件

小景哥哥博客

  • 参数文件

MySql数据库的参数分为两类,动态参数和静态参数。动态参数意味着可以在MySQL实例运行中进行更改,静态参数说明在整个实例声明周期内都不得进行更改,就好像是只读的。可以通过set命令对动态参数进行修改。

  • 日志文件

日志文件包括错误日志、慢查询日志、二进制日志和查询日志。

错误日志文件对MySQL的启动、运行和关闭过程进行了记录。

慢查询日志,在MySQL启动时有一个阈值,会将运行时超过该阈值的所有sql语句都记录到慢查询日志文件中。该阈值可以通过参数long_query_time来设置,默认值为10,代表10秒。还可以通过额外的参数long_query_io将超过指定逻辑IO次数的SQL记录到slow log中,该值默认为100,即表示对逻辑读取次数大于100sql语句,记录到slow log中。

二进制日志(binary log),记录了对MySQL数据库执行更改的所有操作,但是不包括SELECTSHOW这类操作,因为这类操作对数据本身并没有修改。二进制日志文件在默认情况下并没有启动,需要手动指定参数来启动。

  • 表结构定义文件

不论表采用何种存储引擎,MySQL都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义。

  • InnoDB存储引擎文件

InnoDB存储引擎文件包括重做日志文件、表空间文件。

InnoDB采用将存储的数据按表空间进行存放的设计。在默认配置下会有一个初始大小为10MB,名为ibdata1的文件,该文件就是默认的表空间文件。

在默认情况下,在InnoDB存储引擎的数据目录下会有两个名为ib_logfile0ib_logfile1的文件,这就是重做日志文件,它们记录了InnoDB存储引擎的事务日志。每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组下至少有两个重做日志文件,如默认的ib_logfile0ib_logfile1。参数innodb_log_file_size指定每个重做日志文件的大小。参数innodb_log_files_in_group指定了日志文件组中重做日志文件的数量,默认为2。一方面重做日志不能设置的太大,如果设置的很大,在恢复时可能需要很长的时间。另一方面又不能设置的很小,否则可能导致一个事务的日志需要很多次切换重做日志文件,重做日志文件太小还会导致频繁地发生async checkpoint,导致性能的抖动。

首先,二进制日志会记录所有与MySQL数据库有关日志记录,包括InnoDBMyISAMHeap等其他存储引擎的日志。而InnoDB存储引擎的重做日志只记录有关该存储引擎本身的事务日志。其次,记录的内容不同,无论用户将二进制日志文件记录的格式设为statement还是row,又或者是mixed,其记录的都是关于一个事务的具体操作内容,即该日志是逻辑日志。而InnoDB存储引擎的重做日志文件记录的是关于每个页(page)的更改的物理情况。

写入重做日志文件的操作不是直接写,而是先写入一个重做日志缓冲(redo log buffer)中,然后按照一定的条件顺序地写入日志文件。从重做日志缓冲往磁盘写入时,是按512个字节,也就是一个扇区的大小进行写入。因为扇区是写入的最小单位,因此可以保证写入必定是成功的。因此在重做日志的写入过程中不需要有doublewrite

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

勤奋的凯尔森同学

你的鼓励将是我创作的最大动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值