IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置:首頁數(shù)據(jù)庫Oracle → oracle讀一致性導致的問題

oracle讀一致性導致的問題

時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

  為了提高事務處理的速度,oracle采用了讀一致性機制。就是當一個會話更新數(shù)據(jù)后未提交時,其它會話讀取到更新前的結果。這大大提高數(shù)據(jù)并發(fā)的效率,但某些特定條件下會產(chǎn)生錯誤的結果。

  下面的例子進行說明。

  先像表test(A number(10,2))插入1行記錄100

  session1:

  update test set A=(select A+1 from test)

  session2:

  update test set A=(select A+1 from test)

  當會話1提交后再執(zhí)行會話2時,得到得結果是102

  當會話1執(zhí)行后未提交,會話2就已經(jīng)執(zhí)行,得到得結果是101,并不是102。這是因為oracle為了提供數(shù)據(jù)的并發(fā)訪問速度,在一個會話更新數(shù)據(jù)后未提交時,另一個會話select 到的將是第一個會話更新前的數(shù)據(jù)

  單多個會話并發(fā)時,會產(chǎn)生不確定得結果,這不是我們想看到的。在并發(fā)系統(tǒng)開發(fā)時應多注意此類問題,并多測試。

  上面的兩個會話可以改成以下做法,保證數(shù)據(jù)的準確更新

  session1:

  update test set A=A+1

  session2:

  update test set A=A+1

  其它的例子就不多說,當所要的處理結果與數(shù)據(jù)庫本身的機制有沖突時,需嘗試其它的實現(xiàn)方法

關鍵詞標簽:oracle

相關閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權限Oracle數(shù)據(jù)庫賬戶得到管理員權限使用低權限Oracle數(shù)據(jù)庫賬戶得到管理員權限Oracle對user的訪問控制Oracle對user的訪問控制

相關下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權限