InnoDB 存储引擎(8)——InnoDB 存储引擎文件

1. 表空间文件

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

  • 所有基于InnoDB 存储引擎的表的数据都会记录到该共享表空间(innodb_data_file_path指向的表空间)innodb_file_per_table 参数用于指定独立表空间。
    • 独立表空间存储的是该表的数据、索引和插入缓存BITMAP 等信息
    • 其余信息存放在共享表空间,例如 Insert Buffer 等

2. 重做日志文件(redo log file)

  • 虽然属于日志文件,但是是InnoDB 存储引擎中特有的
  • 每个InnoDB 存储引擎至少有1个redo 日志文件组,每个组下至少有2个redo log 文件,如默认的ib_logfile0 和ib_logfile1
  • 为了得到更高的可靠性,用户可以设置多个镜像日志组,将不同的文件组放在不同的磁盘上,以此提高redo log的高可用性
  • 日志组中的每个redo log 文件大小一致,并以循环写入的方式运行
    • 先写ib_logfile0
    • ib_logfile0 写满后切换为ib_logfile1
    • ib_logfile1 写满后切换为ib_logfile0
  • redo log 文件的大小应该设置合适。设置太大,在恢复时可能需要很长的时间;设置太小,可能导致一个事务的日志需要多次切换redo log 文件,另外redo log 文件太小还会导致频繁发生async checkpoint,导致性能的抖动
  • 记录的是关于每个页的更改的物理情况
  • redo log 基本格式

      ▲ redo_log_type 占用1字节,表示redo 日志的类型

      ▲ space 表示表空间ID,但采用压缩的方式,因此占用的空间可能小于4字节

      ▲ page_no:表示页的偏移量,同样采用压缩的方式

      ▲ redo_log_body:表示每个redo 日志的数据部分,恢复时需要调用相应的函数进行解析

  • redo 日志写入过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值