mysql 底层引擎_mysql底层简述

Mysql 日志系统

1)Redo日志

基于innoDB引擎

redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或者某几行的修改,用来恢复提交后的物理数据页。

redo log使用WAL(write ahead logging)技术,每次提交事务后,都会讲存储引擎中的log buffer中的日志写入内核中的OS buffer中,再从OS Buffer写到磁盘的redo log file中。

redo log有三种写入方式:

0)redo log每秒钟写入OS buffer中,再持久化到磁盘。

1)redo log在每次事务提交后,写入os buffer,在从os buffer写入磁盘。

2)redo log在每次事务提交后,写入os buffer,每秒钟从os buffer写入磁盘。

由 innodb_flush_log_at_trx_commit 参数控制。

innodb 的 redo log 有固定大小,write pos 记录当前写入的位置,check point指向当前擦除的位置

2)binlog

逻辑日志,server 端日志

通过和redo log合作,通过两段式提交和保证日志和数据的一致性。

redo log prepare-> 写binlog-> redo log commit

3)undo log

undo log是为了实现事务的原子性,在innoDB中还使用undo log实现MVCC

在操作任何数据之前,先将数据备份到一个地方(undo log),然后进行数据的修改。如果出现错误或者用户调用了ROLLBACK语句,系统可以使用undo log将数据恢复到事务开始前的状态。

undo log是逻辑日志,可以理解为生成增删改操作对应相反的一条语句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值