不同的数据库的事务隔离级别的定义是否一样?

UncleBen 发布于 2016/08/11 22:17
阅读 174
收藏 0

    如题,想学习数据库,在网上看些资料了解事务隔离级别,发现有些资料有矛盾,就比如:有资料说read committed级别不能避免第一类丢失更新,有些资料却说能避免,我就在这里提问,是他们其中一方不对还是不同的数据库的事务隔离级别的定义不一样?

    希望了解的站友能说说,可以的话推荐书籍或者资料,先谢了。

加载中
1
eechen
eechen
Percona技术团队编写Taobao技术团队翻译的 高性能MySQL 开篇第一章就提到了ACID中的事务隔离性Isolation.

MySQL数据库事务的隔离级别
my.cnf配置:
[mysqld]
transaction-isolation = REPEATABLE-READ
可选:
READ-UNCOMMITTED(未提交读):其他事务可以看到当前事务中没有提交的修改,会导致脏读:一个事务读到另外一个事务还没有提交的数据.
READ-COMMITTED(提交读):大多数数据库默认的隔离级别,避免了脏读,但会导致不可重复读:两次执行同样的查询,可能得到不一样的结果.
REPEATABLE-READ(可重复读,默认):实现可重复读,保证同一事务多次读取同样的记录的结果是一致的.但仍避免不了幻读,不过InnoDB用多版本并发控制MVCC解决了幻读的问题.
SERIALIZABLE(可串行化):通过强制事务串行化,避免出现幻读,简单说就是在读取的每一行数据上都加锁,所以可能会导致大量的超时和锁争用的问题,实际需要并发的场景很少使用.
护目评论
护目评论
#PHPDroid#就是一个抄袭老外的东西,连代码都没改一行,这臭不要脸居然说是自己的,还天天吹捧,要不要脸啊?要不要脸啊?要不要脸啊?
UncleBen
UncleBen
谢谢您的回答,对我很有帮助!
0
周翼翼
周翼翼
所谓第一类丢失更新是bug吧, 直正的数据库不会做这种事.
UncleBen
UncleBen
您好,感谢您的回答!
返回顶部
顶部