2020-12-23 DBA面试题二:mysql 事务

mysql 事务

mysql 本身不提供事务支持的,而是开放了存储引擎接口,由具体的存储引擎来实现的,具体的来说是支持mysql 事务的存储引擎 innodb 存储引擎来实现的事务的,实现事务的通用方式是基于redo log 和 undo Log

简单的来说,redo log 记录事务修改后的数据,undo log 记录事务前的原始数据。

所以当一个事务执行时实现发生的过程描述如下:
1.先记录undo log ,redo log ,确保日志刷到磁盘上持久存储
2.更新数据记录,缓存操作并异步到磁盘
3.提交事务,在redo log 中 写入 commit 记录。

当mysql执行事务过程中,如果因故障中断,可以通过redo log 来重做事务,或者undo log 来回滚,来
保证事务一致性,这些都是有事务性存储引擎来完成的,而binlog 不在存储引擎范围累,binlog 是由mysql server 记录的

为保证binlog 数据和redo log 之间的一致性,所以开启了binlog 后实际的事务执行就多了一步,如下:
1.先记录undo log redo log ,确保日志刷到磁盘上持久存储
2.更新数据记录,缓存操作并异步刷盘
3.将事务日志持久化到binlog
4.提交事务,在redo log 中 写入commit记录

#注:因我的能力有限,可能有些问题,仅作参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值