日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
淺述當(dāng)前模式讀與一致性讀續(xù)

在上一篇《淺述當(dāng)前模式讀與一致性讀的區(qū)別》文章里,我用2個(gè)特殊例子描述當(dāng)前模式讀和一致性讀之間的區(qū)別,并提到了“如在事務(wù)啟動(dòng)后到數(shù)據(jù)塊被讀取之間的這段時(shí)間內(nèi),相應(yīng)的數(shù)據(jù)塊發(fā)生了改變,那么可能就會(huì)有我們意想不到的事情發(fā)生”。而這樣的意想不到的結(jié)果可能能被我們接受,但也可能難以被接受。

10年的赤城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整赤城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“赤城網(wǎng)站設(shè)計(jì)”,“赤城網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

我們先看一下以下2條UPDATE語(yǔ)句:

 
 
 
  1. 1:  
  2. update t_test1 set lio=0 where object_id in (101,102);  
  3. 2:  
  4. update t_test1 set lio=(select lio from t_test1 where object_id = 101) where object_id = 102 and (select count(*) from t_test2 t1, t_test2 t2) > 0;  

從邏輯角度來(lái)說(shuō),無(wú)論運(yùn)行了那條語(yǔ)句,我們希望兩條記錄(object_id=101和object_id=102)的lio都相同。

然而,由于UPDATE語(yǔ)句會(huì)同時(shí)引入一致性讀和當(dāng)前模式讀,并且由于這兩種讀之間存在時(shí)間差,我們可能會(huì)得到不希望出現(xiàn)的結(jié)果。

這里我們演示一個(gè)例子。

 
 
 
  1. 13:27:23 HELLODBA.COM>update t_test1 set lio=1 where object_id in (101,102);  
  2.   
  3. 2 rows updated.  
  4.   
  5. 13:29:06 HELLODBA.COM>commit;  
  6.   
  7. Commit complete.  
  8.   
  9. Session 1:  
  10. 13:29:06 HELLODBA.COM>alter system flush buffer_cache;  
  11.   
  12. System altered.  
  13.  
  14. 13:29:11 HELLODBA.COM>-- Transaction 1 begin ---  
  15. 13:29:11 HELLODBA.COM>update t_test1 set lio=(select lio from t_test1 where object_id = 101) where object_id = 102 and (select count(*) from t_test2 t1, t_test2 t2) > 0;  
  16.   
  17. 1 row updated.  
  18.   
  19. 13:29:25 HELLODBA.COM>commit;  
  20.   
  21. Commit complete.  
  22.   
  23. 13:29:25 HELLODBA.COM>-- Transaction 1 end ---  
  24. 13:29:25 HELLODBA.COM>select object_id, lio from t_test1 t where object_id in (101,102);  
  25.   
  26. OBJECT_ID        LIO  
  27. ---------- ----------  
  28.        101          0  
  29.        102          1  
  30.   
  31. 13:29:25 HELLODBA.COM>  
  32.   
  33. Session 2:  
  34.   
  35. 13:29:11 HELLODBA.COM>-- Transaction 2 begin ---  
  36. 13:29:16 HELLODBA.COM>update t_test1 set lio=0 where object_id in (101,102);  
  37.   
  38. 2 rows updated.  
  39.   
  40. 13:29:16 HELLODBA.COM>commit;  
  41.   
  42. Commit complete.  
  43.   
  44. 13:29:16 HELLODBA.COM>-- Transaction 2 end ---  

在這個(gè)例子中,我們并發(fā)執(zhí)行了上面兩條語(yǔ)句,但最終得到一個(gè)和我們邏輯目標(biāo)相左的結(jié)果。

事務(wù)1的SCN早于事務(wù)2的SCN,因此它用了一個(gè)快照數(shù)據(jù)(由一致性讀得到的老的數(shù)據(jù))來(lái)更新了當(dāng)前數(shù)據(jù)(由當(dāng)前模式讀得到的最新的數(shù)據(jù))。

我不能說(shuō)這算不算MVCC的一個(gè)缺陷,但它最少已經(jīng)造成了邏輯混亂。


當(dāng)前標(biāo)題:淺述當(dāng)前模式讀與一致性讀續(xù)
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/coiecpc.html