事務隔離級別 -- 數據庫

事務

四個特性(ACID):

  1. 原子性(Atomicity):事務是一個不可分割的整體,是數據庫中操作的最小單位,事務開始後的操作,要麼全做,要麼全不做,不會停留在中間環節。
  2. 一致性(Consistency) : 事務開始前和結束後,數據庫的完整性約束沒有被破壞。比如a向b轉賬,不可能a扣了錢,但b卻沒有收到。
  3. 隔離性(Isolation):同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何干擾。比如a正在從一張銀行卡取錢,在a取錢的操作結束之前,b不能向這張銀行卡轉賬。
  4. 持久性(Durability):事務完成後,事務對數據庫的所有更新都將被保存到數據庫,不能回滾。

髒讀 幻讀 不可重複讀

髒讀:事務a修改了數據,然後回滾,事務b讀取了事務a修改了的錯誤數據。
不可重複讀:事務b每次讀到的數據都不一樣,原因是事務a在事務b讀取數據的過程中一直在修改數據。
幻讀:事務b處理完所有數據後,發現還有一條數據沒有被處理,原因是事務a在事務b處理數據的過程中增加/刪除了某條數據,事務b的感覺就像是出現了幻覺一樣,因此稱爲幻讀。

不可重複讀側重於修改,而幻讀側重於增加和刪除,因此解決不可重複讀的問題只需要鎖定相應滿足條件的行即可,而對於幻讀則需要鎖定整個表。

隔離級別

隔離級別 髒讀 不可重複讀 幻讀
讀未提交
不可重複讀
可重複讀
串行化

mysql默認的隔離級別是可重複讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章