构成MySQL数据库和InnoDB存储引擎表的文件类型有:
- 参数文件:MySQL实例运行时需要的参数就是存储在这里。
- 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件。
- socket文件:用于套接字连接。
- pid文件,MySQL实例的进程ID文件。
- MySQL表结构文件:用来存放MySQL表结构定义文件。
- 存储引擎文件:存储引擎自己用来记录数据的文件,真正地存储记录和索引等数据。
1-5都是MySQL的五年,只有6是存储引擎自己的文件。
1.参数文件
作用:
MySQL启动的时候,数据会先去读一个配置参数文件,用于初始化,这些参数通常定义了某种内存结构的大小。
什么是参数?
就是一个键值对,比如定义了innodb_buffer_pool_size = 1G
,那么这个字符串就是键,1G就是值。在MySQL启动的时候,就是需要这些初始化参数。
参数类型
主要分为两类:
- 动态参数:在运行的时候进行更改。
- 静态参数:整个实例的运行周期都不能更改。
2.日志文件
用于记录影响数据库的各种类型的活动。
常见的日志包括:
- 错误日志
- 二进制日志
- 慢查询日志
- 查询日志
错误日志
作用:
记录MySQL启动运行停止是的错误、警告、正确的信息。
慢查询日志
作用:
帮助定位可能存在问题的SQL语句,从语句层面进行优化。
举例:
比如将超过一定阈值时间的SQL语句都记录到慢查询日志中,然后运行一段时间,对其查看,优化性能查的语句。
查询日志
作用:
记录所有的MySQL数据库请求信息,无论是否正确执行。
二进制文件
作用:
记录了所有对数据库执行更改的操作,不包括SELECT、SHOW这类查询操作,因为它们不会修改数据。
作用还分为:
- 恢复:某些数据的恢复所需。
- 复制:通过复制和执行二进制文件,将一台数据库与另一台数据库进行实时同步。
- 审计:判断是否存在SQL注入攻击。
3.套接字文件
作用:
UNIX系统下本地连接数据可采用的套接字方式,需要该文件。
4.pid文件
作用:
实例启动的时候,会将自己的进程ID写入这个文件中。
5.表结构定义文件
作用:
用于记录存储数据的表的结构定义。
6.InnoDB存储引擎文件
上面介绍的都是MySQL本身的文件,与存储引擎无关。
表空间文件
作用:
InnoDB采用将存储数据按表空间进行存放的设计,表空间文件就是真正存放数据库数据的文件。
重做日志文件
作用:
用于恢复主机因为掉电宕机而损失的一部分数据,保证数据的完整性。
与上面提到的MySQL数据库二进制文件有什么区别?
- 二进制文件会记录所有与数据库相关的修改操作,包括其他引擎的日志,而这里的重做日志只是InnoDB有关的事务日志。
- 记录的内容不同。二进制记录事务的具体操作内存,而重做日志记录关于每个页的更改的物理情况。
- 写入时间不同,二进制文件只在事务提交前进行记录,只向磁盘写一次,而重做日志不断地写。
重做日志写入过程:
先写入重做日志缓冲,在按顺序写入日志文件。