日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > 事務性質以及隔離級別

事務性質以及隔離級別

來源:程序員人生   發布時間:2015-09-11 08:04:28 閱讀次數:5370次

事務的概念

事務(Transaction)是并發控制的基本單位。所謂的事務,它是1個操作序列,這些操作要末都會履行,要末都不會履行,它是1個不可分割的工作單位。事務的提出主要是為了解決并發情況下保持數據1致性的問題。

事務的基本特點

  • Atomic(原子性):事務中包括的操作被看做是1個邏輯單元,這個邏輯單元中的操作要末全部履行成功,要末全部履行失敗。
  • Consistentcy(1致性):只的合法的數據可以被寫入數據庫,否則事務應當將其回滾到最初的狀態。
  • Isolation(隔離性):事務允許多個用戶對同1個數據進行并發訪問,而不破壞數據的正確性和完全性。同時,并行事務的修改必須與其他并行事務的修改相互獨立。
  • Durability(持久性):事務結束后,事務處理的結果必須能夠得到固化。
這4個簡稱為:ACID
這4個基本特點也能夠稱為4種屬性:
  ①原子性(Atomicity):事務中的所有元素作為1個整體提交或回滾,事務的個元素是不可分的,事務是1個完全操作。
  ②1致性(Consistemcy):事物完成時,數據必須是1致的,也就是說,和事物開始之前,數據存儲中的數據處于1致狀態。保證數據的無損。
  ③隔離性(Isolation):對數據進行修改的多個事務是彼此隔離的。這表明事務必須是獨立的,不應當以任何方式以來于或影響其他事務。
  ④持久性(Durability):事務完成以后,它對系統的影響是永久的,該修改即便出現系統故障也將1直保存,真實的修改了數據庫

事務的隔離級別

數據庫的隔離級別有4種:由低到高順次為Read uncommittedRead committed、Repeatable read、Serializable這4個級別可以逐一解決臟讀、不可重復讀幻讀這幾類問題。

√: 可能出現    ×: 不會出現

臟讀 不可重復讀 幻讀
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

 

注意:我們討論隔離級別的場景,主要是在多個事務并發的情況下,因此,接下來的講授都圍繞事務并發。

Read uncommitted 讀未提交

公司發工資了,領導把5000元打到singo的賬號上,但是該事務并未提交,而singo正好去查看賬戶,發現工資已到賬,是5000元整,非常高興。可是不幸的是,領導發現發給singo的工資金額不對,是2000元,因而迅速回滾了事務,修改金額后,將事務提交,最后singo實際的工資只有2000元,singo空歡樂1場。


 

出現上述情況,即我們所說的臟讀,兩個并發的事務,“事務A:領導給singo發工資”、“事務B:singo查詢工資賬戶”,事務B讀取了事務A還沒有提交的數據。

當隔離級別設置為Read uncommitted時,便可能出現臟讀,如何避免臟讀,請看下1個隔離級別。

Read committed 讀提交

singo拿著工資卡去消費,系統讀取到卡里確切有2000元,而此時她的老婆也正好在網上轉賬,把singo工資卡的2000元轉到另外一賬戶,并在singo之條件交了事務,當singo扣款時,系統檢查到singo的工資卡已沒有錢,扣款失敗,singo10分疑惑,明明卡里有錢,為什么......

出現上述情況,即我們所說的不可重復讀,兩個并發的事務,“事務A:singo消費”、“事務B:singo的老婆網上轉賬”,事務A事前讀取了數據,事務B緊接了更新了數據,并提交了事務,而事務A再次讀取該數據時,數據已產生了改變。

當隔離級別設置為Read committed時,避免了臟讀,但是可能會造成不可重復讀。

大多數數據庫的默許級別就是Read committed,比如Sql Server , Oracle。如何解決不可重復讀這1問題,請看下1個隔離級別。

Repeatable read 重復讀

當隔離級別設置為Repeatable read時,可以免不可重復讀。當singo拿著工資卡去消費時,1旦系統開始讀取工資卡信息(即事務開始),singo的老婆就不可能對該記錄進行修改,也就是singo的老婆不能在此時轉賬。

雖然Repeatable read避免了不可重復讀,但還有可能出現幻讀。

singo的老婆工作在銀行部門,她經常通過銀行內部系統查看singo的信譽卡消費記錄。有1天,她正在查詢到singo當月信譽卡的總消費金額(select sum(amount) from transaction where month = 本月)為80元,而singo此時正好在外面胡吃海塞后在收銀臺買單,消費1000元,即新增了1條1000元的消費記錄(insert transaction ... ),并提交了事務,隨后singo的老婆將singo當月信譽卡消費的明細打印到A4紙上,卻發現消費總額為1080元,singo的老婆很驚訝,以為出現了幻覺,幻讀就這樣產生了。

注:Mysql的默許隔離級別就是Repeatable read。

Serializable 序列化

Serializable是最高的事務隔離級別,同時期價也花費最高,性能很低,1般很少使用,在該級別下,事務順序履行,不但可以免臟讀、不可重復讀,還避免了幻像讀。



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久综合亚洲 | 国产激情 | 欧美aaaaaaaaaa| xxxx性欧美 | 精品一区二区三区在线播放 | 91精品国产综合久久福利 | 久久久久一区二区 | 免费看成人 | 色网站免费 | 一区在线观看视频 | 天天影院色 | 日韩成人精品视频 | 2019中文字幕在线视频 | 日本高清视频在线 | 久久久综合精品 | 精品久久久精品 | 日韩在线视频免费观看 | 中文字幕国产日韩 | 欧美综合在线观看 | 九九爱爱视频 | 国产一区二区免费视频 | v天堂在线 | 国产精品久久久久久久岛一本蜜乳 | 麻豆黄网 | 免费一区二区三区 | 国产一级免费 | 国产精品日韩一区 | 久久久亚洲成人 | 日韩视频区 | 美女毛片在线看 | 玖玖在线精品 | 国产乱码精品一区二区三区五月婷 | 中文字幕亚洲综合 | 国产精品一区二区三区四区 | 五月天天色 | 国产综合亚洲精品一区二 | 亚洲福利一区二区三区 | 国产精品xx| 91精品国产综合久久福利不卡 | 这里只有精品视频在线观看 | 久久成人免费视频 |