永发信息网

幻读和不可重复读的区别

答案:1  悬赏:30  手机版
解决时间 2021-04-08 09:13
幻读和不可重复读的区别
最佳答案
幻读和不可重复读的区别
1) "不可重复读" 是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题

要避免这种情况,通常可以用 set tran isolation level repeatable read 来设置隔离级别,这样事务A 在两次读取表T中的数据时,事务B如果企图更改表T中的数据(细节到事务A读取数据)时,就会被阻塞,知道事务A提交! 这样就保证了,事务A两次读取的数据的一致性。

2)幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主复本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。

还是上面的例子,事务A要两次读取表T的中数据,虽然设置 repeatable read 可以防止事务B对数据进行修改,但是事务B却可以向表T中插入新的数据。如何防止这个问题,我们可以考虑设置最高的事务隔离级别 set tran isolation level serializable。于是乎,事务B就只能乖乖的等待事务A的提交,才能想表T中插入新的数据,从而避免了幻读!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
相见恨晚下一句回答
木城地址有知道的么?有点事想过去
vivox6root权限获取
老人肺癌手术后为什么喘气很急
用质量相等的锌粉和铁粉,分别与溶质质量分数
人体受什么光波最容易被催眠
吉利远景轿车大约多重?
虎皮兰用什么土好
在北京拉滴滴违法吗
求做墓地营销策划的公司
学校五年级有5个班,要想给每班每个学生都编
先量一量,再算出下面各图形的周长.(1)(2
听说最近可以用苹果换小米,想问问苹果4可以
我身高16.1米57公斤,穿鞋子38码是最合适的。
怎样去除脸上的晒斑,如果用醋去日晒斑要用多
推荐资讯
太阳系以外离地球最近的恒星是比邻星
天欣驾校建发分校报名处我想知道这个在什么地
evra避孕贴和爱侣栓哪个副作用小
一幢楼房每层高度是2.85米乘速度2.1一秒的电
More highways have been built in China, __
谁玩《英雄传说-幻梦诗人》的,帮帮忙啊。在
尼康D720016g内存卡可以存多少张照片
一切事物都包含有和无难和易是谁的观点它主张
报关两放是指什么?
iphone6微信朋友圈怎么回到顶部
男变萝莉玄幻穿越 到了异界变成萝莉要长一些
无知求问:建筑设计师和结构设计师分别是做什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?