mysql的事物

  所謂的事物就是一組原子性的SQL語句,或者說是一個獨立的工做單元。數據庫

  1、事物擁有四大特徵:併發

 

    ①原子性(atomicity):一個事物必須被分爲一個不可分割的的最小單元,整個事物中的全部操做要麼所有提交,要麼所有回滾,這就是事物的原子性。atom

 

    ②一致性(consistency):數據庫老是從一個一致性的狀態轉換到另外一個一致性的狀態。即數據庫事物不能破壞數據的完整性和一致性。spa

 

    ③隔離性(isolation):指的是在併發環境中,多個事物處理相同的數據,每一個事物都有各自的完整數據空間。日誌

 

    ④持久性(durability):一旦事物提交,則其所作的修改就會永久保存到數據庫中。ci

 

    事物的原子性、一致性、持久性三個特徵是經過事物日誌來維持的,事物日誌記錄了對事物的每次的更新,若是由於某些緣由事物出現錯誤,則能夠經過撤銷事物對數據庫  的更改,是事物回滾到數據庫執行事物以前的初始狀態。it

 

   事物的隔離性是經過鎖機構來實現的,擁有各自的獨立空間。io

 

  2、事物的隔離級別table

 

    SQL標準定義了四種隔離級別:class

 

    無提交讀(Read Uncommitted:Read Uncommitted級別中,事物的修改,即便沒有提交,對其餘事物也是可見的。事物能夠讀取未提交的數據,這也被稱爲髒讀(Dirty Read.

 

    提交讀(Read Committed:一個事物從開始知道事物提交以前,所作的任何修改對其餘事物都是不可見的,這也叫不可重複讀(nonrepeatable,執行兩次相同的查詢,獲得不一樣的結果。

 

    可重複讀(Repeatable Read:該級別保證了同一個事物中屢次讀取一樣的結果是一致的。可能會致使幻讀。

 

    可串行化(Serializable:最高的隔離級別。經過強制事物串行執行,避免了前面說的幻讀的問題。

相關文章
相關標籤/搜索