事务的隔离级别理解
来源:互联网 发布:2016最好听的网络歌曲 编辑:程序博客网 时间:2024/05/21 14:03
事务隔离级别出现的原因,以及隔离级别能解决的并发问题
选择完隔离级别与设计完事务之后,在使用过程中常常会遇到以下几种情况:
1.更新丢失(Lost update):两个事务同时更新,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。
2.脏读(Dirty Reads):一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险的,因为很可能所有的操作都被回滚。
3.不可重复读取(Non-repeatable Reads):一个事务两次读取,但在第二次读取前另一事务已经更新了。
4.虚读(Phantom Reads):一个事务两次读取,第二次读取到了另一事务插入的数据。
5.两次更新问题(Second lost updates problem):两个事务都读取了数据,并同时更新,第一个事务更新失败。
隔离级别(低->高)
● 未授权读取(Read Uncommitted)
允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。
● 授权读取(Read Committed)
允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
● 可重复读取(Repeatable Read)
禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
● 序列化(Serializable)
提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。
- 事务隔离级别的理解
- 事务的隔离级别理解
- 事务隔离级别理解
- 自己理解的“数据库事务隔离级别”
- 理解事务的4种隔离级别
- 理解事务的ACID和隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 理解mysql_事务的隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 理解事务的4种隔离级别
- 事务的隔离级别
- 事务的隔离级别
- 事务的隔离级别
- Linux/Unix/Mac文件存放路径记录
- Java知识五--注解浅析
- Android开发资源获取国内代理
- 优先级队列广搜——坦克大战
- C++获取时间 场景写日志
- 事务的隔离级别理解
- 多日低效率关于$post,$get,$ajax的感悟
- test
- 由常量池 运行时常量池 String intern方法想到的(四)之深入理解intern
- ios开发模仿CocoaChina精选代码使用masonry计算cell的高度总结
- 加油!
- Maven常用命令
- PDM小记
- grub2的/etc/default/grub文件详解