<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jcat
    寵辱不驚,閑看庭前花開(kāi)花落~~
    posts - 173,comments - 67,trackbacks - 0

    一致和并發(fā)是對(duì)立的,需要根據(jù)應(yīng)用,選擇權(quán)宜之計(jì)


    數(shù)據(jù)不一致的現(xiàn)象

    ---事務(wù)內(nèi)單SQL的情況---
    1.臟讀-Dirty Read:本事務(wù)讀取了其它事務(wù)尚未提交的修改數(shù)據(jù)
    例子:讀了不該讀的
    1:00 x=1
    1:01 A用戶 Update x=2(但未commit)
    1:02 B用戶 Select x --> x=2
    合理的情況是x仍然等于1

    ---事務(wù)內(nèi)多SQL的情況(典型的如,先查再改)---
    2.不可重復(fù)讀-Non Repeatable Read
    例子1:自相矛盾
    1:00 x=1 y=2
    1:01 B用戶 Select x,y --> x=1 y=2
    1:02 A用戶 Update x=2; Commit;
    1:03 B用戶 Select x+y --> x+y=4
    首先這個(gè)結(jié)果從單條SQL的角度看,是沒(méi)有問(wèn)題的。但是,如果把B的兩次查詢看作一個(gè)整體(事務(wù)),那么合理的情況應(yīng)該是
    ? x+y仍然等于3
    ? 或者B再進(jìn)行一次事務(wù),得出 x=2 y=2 x+y=4 的結(jié)果


    例子2:更新丟失
    1:00 x=1
    1:01 B用戶 Select x --> x=1
    1:02 A用戶 Select x --> x=1
    1:03 A用戶 Update x=2; Commit;
    1:04 B用戶 Update x=3; Commit;
    同樣,從單條SQL來(lái)講,沒(méi)有任何問(wèn)題。
    但是從邏輯的合理性講,一般的更新操作都是先查再改,換言之
    ? A真正想做的是Update x from 1 to 2
    ? B真正想做的是Update x from 1 to 3
    但最終卻造成了在B不知情的情況下,把B的初衷改為了Update x from 2 to 3


    3.幻影讀-Phantom Read
    例子:讀到了未來(lái)
    1:00 X1=1 X2=2
    1:01 B用戶 Select Xi --> X1=1 X2=2
    1:02 A用戶 Insert X3=3; Commit;
    1:03 B用戶 Select sum(Xi) --> re=6
    其實(shí)道理和之前的不可重復(fù)讀相同,只不過(guò)是由Insert引起的罷了。
    (甚至Delete也會(huì)引起類(lèi)似的問(wèn)題,但好像學(xué)術(shù)界并沒(méi)有對(duì)Delete進(jìn)行討論)




    Isolation Level
    Read Uncommitted:1,2,3都會(huì)發(fā)生
    ? Oracle中嚴(yán)格禁止臟讀
    ? 在SQL Server 7.0中,是可以選擇該級(jí)別的
    Read Committed:發(fā)生2,3(Oracle的默認(rèn)級(jí)別)
    Repeatable Read:發(fā)生3
    Serializable:都不發(fā)生


    Oracle的實(shí)現(xiàn)方式
    Read Committed:默認(rèn)就實(shí)現(xiàn)
    Repeatable Read:
    ? 1. 悲觀鎖(select ... for update),影響并發(fā)
    ? 2. 樂(lè)觀鎖(update where 所有字段都作為條件),不影響并發(fā)
    Serializable:
    ? alter session set isolation_level=serializable/read only
    posted on 2009-12-05 17:45 Jcat 閱讀(217) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Database
    主站蜘蛛池模板: 91热成人精品国产免费| 亚洲午夜未满十八勿入| 免费无码成人AV在线播放不卡| 久久国产亚洲高清观看| 四虎免费大片aⅴ入口| 色吊丝性永久免费看码| 亚洲欧洲国产精品你懂的| 日韩毛片免费在线观看| 在线观看黄片免费入口不卡| 国产成人精品亚洲2020| 亚洲精品专区在线观看| 5555在线播放免费播放| 看免费毛片天天看| 亚洲精品在线视频观看| 免费吃奶摸下激烈视频| 91久久成人免费| 和老外3p爽粗大免费视频| 亚洲人成影院在线高清| 亚洲欧洲精品无码AV| 好先生在线观看免费播放| 爽爽爽爽爽爽爽成人免费观看| 亚洲熟女综合色一区二区三区| 日韩亚洲欧洲在线com91tv| 在线观看91精品国产不卡免费| 午夜视频免费在线观看| 一级黄色免费毛片| 亚洲成a∨人片在无码2023| 亚洲狠狠综合久久| 一本色道久久综合亚洲精品| 日韩成人在线免费视频| 免费观看无遮挡www的视频| aaa毛片视频免费观看| 爱爱帝国亚洲一区二区三区| 亚洲国产精品无码久久久| 久久久久久a亚洲欧洲aⅴ| 亚洲毛片网址在线观看中文字幕 | 亚洲午夜一区二区三区| 亚洲AV中文无码字幕色三| 免费乱码中文字幕网站| 日韩一级视频免费观看| 噼里啪啦电影在线观看免费高清|