數據庫事務、隔離級別、髒讀、不可重複讀、幻讀

事務

就是一組DML語句組成,這些語句在邏輯上存在相關性,這一組DML語句要麼全部成功,要麼全部失敗,是一個整體。MySQL提供一種機制,保證我們達到這樣的效果。事務還規定不同的客戶端看到的數據是不相同的。(《數據庫系統概念》)

數據庫中的一個單獨的執行單元(Unit),由高級語言編寫用戶程序的執行所引起。當更改數據成功時,在事務中更改的數據就會被commit,不會再改變。否則,事務就會取消或者回滾,更改無效。(Java程序員面試寶典)

我的理解,其實數據庫事務就是數據庫進行讀/寫的操作序列

作用:1.回滾事務 2.隔離操作

事務的特性

  1. 原子性:事務不可再分
  2. 一致性:執行前後,狀態一致
  3. 隔離性:不被其他正在進行的事務看到修改過程
  4. 持久性:一旦提交,記錄是永久的

4種隔離級別

  1. Read unCommited 讀未提交

  2. Read Commited 讀已提交
    處理併發下,髒讀的現象;
    髒讀:某一端看到了未被提交的事務,導致傳達不正確。
    A:1
    B:1 (髒數據)
    A:1->2 commit

  3. Repeatable Read 可重複讀
    處理併發下,不可重複讀的現象;
    不可重複讀:是指在一個事務內,多次讀同一數據。
    A:1
    B:1
    A:1->2 commit
    B:2

  4. Serializable 可串行化
    處理併發下,幻讀的現象;
    幻讀:兩端同時操作,導致數據混亂。
    A:2 (幻讀)
    B:2->1
    A:1 (幻讀)

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