国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

事務(wù)隔離級別

2024-07-21 02:52:57
字體:
供稿:網(wǎng)友

文本轉(zhuǎn)載,原始地址為:http://singo107.iteye.com/blog/1175084

數(shù)據(jù)庫事務(wù)的隔離級別有4個,由低到高依次為: Read uncommitted(讀未提交) Read committed (讀已提交) Repeatable read (重復(fù)讀) Serializable (序列化) 這四個級別可以逐個解決臟讀 、不可重復(fù)讀 、幻讀 這幾類問題

Read uncommitted(讀未提交): 公司發(fā)工資了,領(lǐng)導(dǎo)把5000元打到singo的賬號上,但是該事務(wù)并未提交,而singo正好去查看賬戶,發(fā)現(xiàn)工資已經(jīng)到賬,是5000元整,非常高 興。可是不幸的是,領(lǐng)導(dǎo)發(fā)現(xiàn)發(fā)給singo的工資金額不對,是2000元,于是迅速回滾了事務(wù),修改金額后,將事務(wù)提交,最后singo實際的工資只有 2000元,singo空歡喜一場。

這里寫圖片描述

出現(xiàn)上述情況,即我們所說的臟讀 ,兩個并發(fā)的事務(wù),“事務(wù)A:領(lǐng)導(dǎo)給singo發(fā)工資”、“事務(wù)B:singo查詢工資賬戶”,事務(wù)B讀取了事務(wù)A尚未提交的數(shù)據(jù)。 當(dāng)隔離級別設(shè)置為Read uncommitted 時,就可能出現(xiàn)臟讀,如何避免臟讀,請看下一個隔離級別

Read committed (讀已提交)

singo拿著工資卡去消費,系統(tǒng)讀取到卡里確實有2000元,而此時她的老婆也正好在網(wǎng)上轉(zhuǎn)賬,把singo工資卡的2000元轉(zhuǎn)到另一賬戶,并在 singo之前提交了事務(wù),當(dāng)singo扣款時,系統(tǒng)檢查到singo的工資卡已經(jīng)沒有錢,扣款失敗,singo十分納悶,明明卡里有錢,為 何…… 出現(xiàn)上述情況,即我們所說的不可重復(fù)讀 ,兩個并發(fā)的事務(wù),“事務(wù)A:singo消費”、“事務(wù)B:singo的老婆網(wǎng)上轉(zhuǎn)賬”,事務(wù)A事先讀取了數(shù)據(jù),事務(wù)B緊接了更新了數(shù)據(jù),并提交了事務(wù),而事務(wù)A再次讀取該數(shù)據(jù)時,數(shù)據(jù)已經(jīng)發(fā)生了改變。 當(dāng)隔離級別設(shè)置為Read committed 時,避免了臟讀,但是可能會造成不可重復(fù)讀。 大多數(shù)數(shù)據(jù)庫的默認級別就是Read committed,比如Sql Server , Oracle。如何解決不可重復(fù)讀這一問題,請看下一個隔離級別。

Repeatable read (重復(fù)讀)

當(dāng)隔離級別設(shè)置為Repeatable read 時,可以避免不可重復(fù)讀。當(dāng)singo拿著工資卡去消費時,一旦系統(tǒng)開始讀取工資卡信息(即事務(wù)開始),singo的老婆就不可能對該記錄進行修改,也就是singo的老婆不能在此時轉(zhuǎn)賬。 雖然Repeatable read避免了不可重復(fù)讀,但還有可能出現(xiàn)幻讀 。 singo的老婆工作在銀行部門,她時常通過銀行內(nèi)部系統(tǒng)查看singo的信用卡消費記錄。有一天,她正在查詢到singo當(dāng)月信用卡的總消費金額 (select sum(amount) from transaction where month = 本月)為80元,而singo此時正好在外面胡吃海塞后在收銀臺買單,消費1000元,即新增了一條1000元的消費記錄(insert transaction … ),并提交了事務(wù),隨后singo的老婆將singo當(dāng)月信用卡消費的明細打印到A4紙上,卻發(fā)現(xiàn)消費總額為1080元,singo的老婆很詫異,以為出 現(xiàn)了幻覺,幻讀就這樣產(chǎn)生了。 注:MySQL的默認隔離級別就是Repeatable read

Serializable (序列化)

Serializable 是最高的事務(wù)隔離級別,同時代價也花費最高,性能很低,一般很少使用,在該級別下,事務(wù)順序執(zhí)行,不僅可以避免臟讀、不可重復(fù)讀,還避免了幻像讀


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石台县| 偃师市| 安多县| 金阳县| 东乌珠穆沁旗| 武定县| 铜梁县| 普安县| 上犹县| 桑日县| 潮州市| 秦安县| 那坡县| 禹州市| 泸西县| 金华市| 多伦县| 信宜市| 广南县| 金乡县| 镶黄旗| 泉州市| 泗水县| 平原县| 桐乡市| 新龙县| 长顺县| 千阳县| 原阳县| 长阳| 涡阳县| 通城县| 肃南| 凤庆县| 盐源县| 昔阳县| 永春县| 福贡县| 民勤县| 北宁市| 万山特区|