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

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)Oracle → oracle讀一致性導(dǎo)致的問(wèn)題

oracle讀一致性導(dǎo)致的問(wèn)題

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

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

  下面的例子進(jìn)行說(shuō)明。

  先像表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)

  當(dāng)會(huì)話1提交后再執(zhí)行會(huì)話2時(shí),得到得結(jié)果是102

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

  單多個(gè)會(huì)話并發(fā)時(shí),會(huì)產(chǎn)生不確定得結(jié)果,這不是我們想看到的。在并發(fā)系統(tǒng)開(kāi)發(fā)時(shí)應(yīng)多注意此類問(wèn)題,并多測(cè)試。

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

  session1:

  update test set A=A+1

  session2:

  update test set A=A+1

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

關(guān)鍵詞標(biāo)簽:oracle

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法