目录
InnoDB引擎目前是MySQL默认的储存引擎,主要是分为三部分
储存结构 存结构 线程结构
一.储存结构
1.储存结构分为逻辑储存,跟物理储存结构
InnoDB储存引擎的逻辑储存结构,所有创建的表都存放在一个空间中,称为表空间,表空间有由段,区 页 组成
2.表空间
表空间可以看为储存引擎的老大 ,所有的数据都是存放在数据表里
3.段
在表空间是由各个段组成的,常见的段有数据段,索引段 回滚段
InonoDB储存引擎是由索引组成的 ,因此数据即索引 索引即数据
(注意:并不是每个对象都有段,更准确的说,表空间是由分散的页和段组成)
4.区
区是连续的页组成,是物理连续分配的一段空间 每个区域固定大小1MB,对于大的数据段 InnoDB储存引擎做多分为四个区,保证数据的顺序
5.页
InnoDB的最小物理储存分配单位是页 页的默认大小是16kB
常见的页类型有:
数据页 Undo页 系统页 事务数据页 插入缓冲位图页 插入缓冲空间列表页 未压缩的二进制大对象页 压缩的二进制大对象页
6.行
InnoDB储存引擎的面是向行的 也就是说数据的存放是按照行进行的 最多允许存放 16*1024/2-200的行记录 即7992行的记录
二.物理储存结构
mysql 是通过逻辑储存结构来管理物理储存结构,即管理硬盘上储存的各种文件
1.数据文件
idb文件和ibdata文件,这两种文件都是存放innoDB数据文件,之所以有两种文件存放innoDB数据(包括索引),是因为InnoDB的数据存放方式可以通过配置来决定是共享表空见储存数据,还是独立空间储存数据
2.重做日志
重做日志 文件是InnoDB储存引擎生成的日志,主要是为了保护数据的可靠性和事务的持久性
3.撤销日志文件
撤销日志是记录一些旧版本的数据
4.参数文件
在MySQL启动时,数据库会先都一个配置文件,用于寻找数据库的各种文件所在的位置
MySQL把参数分为两类 动态跟静态
动态参数:MySQL在运行的过程中可以对参数进行在线修改,可以通过命令 set global 或者 set session 在数据库中完成设置
静态参数:是指无法在线修改
5.错误日志
记录了MySQL的启动,运行,关闭 过程中出现的问题,进行了一些记录
6.二进制日志(binlog)
记录了一些数据库更改的操作但是不包括select 跟 show 因为操作数据本身没有修改
可以完成主从复制,把主服务器所有修改的数据记录在binlog中,通过网络发送给从服务器,从而达到主从同步的目的
进行恢复操作,数据可以通过binlog文件,使用mysqlbinlog命令,实现基于时间跟位置的恢复
7.慢查询日志
慢查询日志可以把参数"log_query_time"时间的所有SQL语句记录下来
8.全量日志
全量日志会记MySQL数据库的所有操作的SQL语句,包括select 跟 show
9.中继日志
主从复制中,中继日志是从服务器上一个很重要的文件
1.主服务器( master )把数据更改记录到二进制日志( binlog )中
2.从服务器( slave )把主服务器的二进制日志复制到自己的中继日志( relay log )
3.从服务器重做中继日志中的日志,把更改应用到自己的数据库上,达到最终一致性
10.PID文件
当MySQL启动时候,会将自己的ID写入到一个文件中,该文件称为PID文件.
11. Socket文件
在 UNIX 系统下本地连接 MySQL 可以采用 UNIX 域套接字方式,这种方式需要一个套接字( socket )文件,由参数 socket 控制
12.表结构文件
数据的存储是根据表进行的,每个表都会有与之对应的文件。但不论采用何种存储引擎, MySQL 都有一个以 frm 为后缀名的文件,这个文件记录了该表的表结构定义。 frm 可以存放视图的定义,存放视图定义的 frm 文件是文本文件