数据库 数据隔离等级

最近在复习数据库,关于隔离等级这一块有些疑问,希望大佬解惑

四种隔离等级:read uncommitted, read committed, repeatable read, serialization

其中read committed解决了脏读问题,具体是怎么解决的?

如:数据库处于read committed态
    事务A                                           事务B
select * from t where a=1;
                                                update t set a=2 where a=1;
select * from t where a=1;
                                                commit;
commit;
select * from t where a=1;

事务A进行了三次查询,第一次结果为a=1,第二次结果为a=1(即阻止了脏读),第三次结果为empty set(即出现了不可重复读现象)

最终问题:
    1. read committed是怎样阻止脏读的?
    2. repeatable read是怎样实现可重复读的?
全部评论
对表加锁或者对行加锁,和锁的释放时间(事务结束释放或者动作结束的时候释放),我在博客看到的是这样
点赞 回复
分享
发布于 2017-08-31 11:36
读的时候加入共享锁,读提交在读完之后就释放锁。重复读在事务结束后才释放锁。不知道对不对
点赞 回复
分享
发布于 2017-08-31 11:51
滴滴
校招火热招聘中
官网直投
今天面蘑菇街被问了可重复读,我答的加锁,面试官建议我看看MVCC,锁开销太大啦
点赞 回复
分享
发布于 2017-08-31 11:59
求大佬解答
点赞 回复
分享
发布于 2017-08-31 12:34
提交读是加的读写锁的变形,读读、读写不加锁,写读写写加锁,第一次读时读到起始数据,写操作进来修改数据,没提交时读是不行的,写操作完成后在读读到新数据,解决了脏读,但解决不了不可重复读,个人理解
点赞 回复
分享
发布于 2017-08-31 13:37

相关推荐

投递美团等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务