Mysql InnoDB 事务简单理解
2018-01-31 14:32
537 查看
1. 事务基本特性: ACID
A 由undo 来实现的
I 由锁实现
D 由redo实现
C 由AID共同保证
2. undo 实现了 事务的回滚 以及 MVCC
事务的回滚: 记录下事务期间的所有Update/Delete/Insert操作的前后value,当需要rollback时会做一个相反的操作。
MVCC:undo恰好记录下了事务期间的快照信息,当Update/Delete/Insert占用某行记录需要被读取时,可以根据事务级别读取undo中的快照信息( read_committed模式下读取的是最新快照;Repeatable Read模式下读取的是事务开始点的快照)。
3. 锁 实现了 事务操作的隔离
Update/Insert/Delete/Select ...for Upadate 操作的同一行Record,会通过锁排序处理
Select与 Update/Delete 操作的同一行Record,会通过MVCC来实现互相不冲突。简单来说就是Select的时候发现某行处于加锁状态,会读取该行的undo信息读取当前事物级别匹配的快照。
4. redo 实现了事务的持久性
简单来说就是redo日志文件会保存下当前的所有操作,当出现系统崩溃,系统重启时会以当前redo日志文件中checkpoint为起点开始恢复。
A 由undo 来实现的
I 由锁实现
D 由redo实现
C 由AID共同保证
2. undo 实现了 事务的回滚 以及 MVCC
事务的回滚: 记录下事务期间的所有Update/Delete/Insert操作的前后value,当需要rollback时会做一个相反的操作。
MVCC:undo恰好记录下了事务期间的快照信息,当Update/Delete/Insert占用某行记录需要被读取时,可以根据事务级别读取undo中的快照信息( read_committed模式下读取的是最新快照;Repeatable Read模式下读取的是事务开始点的快照)。
3. 锁 实现了 事务操作的隔离
Update/Insert/Delete/Select ...for Upadate 操作的同一行Record,会通过锁排序处理
Select与 Update/Delete 操作的同一行Record,会通过MVCC来实现互相不冲突。简单来说就是Select的时候发现某行处于加锁状态,会读取该行的undo信息读取当前事物级别匹配的快照。
4. redo 实现了事务的持久性
简单来说就是redo日志文件会保存下当前的所有操作,当出现系统崩溃,系统重启时会以当前redo日志文件中checkpoint为起点开始恢复。
相关文章推荐
- MySQL事务、存储过程、视图、自定义函数、触发器、事件的简单使用及理解
- mysql事务的简单理解
- InnoDB---深入理解事务提交--02
- mysql事务使用 超简单
- mysql事务和锁InnoDB
- MySQL InnoDB四个事务级别 与 脏读、不重复读、幻读
- mysql事务和锁InnoDB
- mysql——innodb事务日志详解
- mysql innodb change buffering 简单介绍
- MySQL中MyISAM引擎与InnoDB引擎性能简单测试
- 理解MySql事务隔离机制、锁以及各种锁协议
- Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
- MySQL事务一致性理解
- MySQL InnoDB事务的隔离级别
- mysql的innodb中事务日志(redo log)ib_logfile
- mysql事务和锁InnoDB(转自http://www.cnblogs.com/zhaoyl/p/4121010.html)
- mysql触发器简单demo,深入理解
- Spring TransactionTemplate + Mysql事务理解
- InnoDB---深入理解事务提交--03
- MySQL InnoDB之事务与锁详解