发表文章

[最新] Mysql事务隔离级别

xiaoguangtouqiang 5月前 2

    前几天被问到这个问题的时候,竟无言以对,所以做个简单的了解,先了解下在并发操作的时候数据库存在的一些问题

1.事务的并发问题

1>脏读:事务A读取了事务B更新的数据,然后B回滚操作,这时候A读取到的就是脏数据;

2>不可重复读:事务A中多次读取了同一数据,在这个过程中,事务B对数据进行了修改,导致A多次读取同一数据时,结果不一致了;

3>幻读:系统管理员A将数据库中所有同学的成绩从具体的分数改成A、B、C、D、E等级,在这个过程中,系统管理员B插入了一条具体的分数的记录;结果系统管理员A修改结束后发现还有一条记录没有修改,好像发生了幻觉一样;

注意:不可重复读和幻读的区别,不可重复读侧重于修改,幻读侧重于新增或删除,幻读是全表的操作;解决不可重复读的问题只需要“锁住读取的那些行”就可以了;而解决幻读问题需要锁表;

2.事务的隔离级别

1>未提交读:允许脏读,也就是可以读取到其他会话中未提交事务修改的数据;

2>提交读:只能读到已经提交的数据;Oracle默认这个级别;

3>可重复读:在同一事务内的查询都是事务开始时刻一致的,InnoDb默认的级别,同时InnoDB解决了幻读;

4>串行读:完全串行的读,每次读取都要获取表级的锁,读取都会互相阻塞;

参考文章:

http://www.cnblogs.com/huanongying/p/7021555.html


相关推荐
最新评论 (0)
返回
发表文章
xiaoguangtouqiang
文章数
59
评论数
0
注册排名
790234