數據庫事物隔離級別

事物是什麼?即數據庫事物是指在一個事物內所有數據庫的改變操作要麼都完成,要麼都不完成。更新和插入數據都是改變操作即可回滾操作,查詢不是,查詢無法回滾。

  • 事物的4個特性:ACID 。

  • A (Atomic) :原子性,在一個事物內所有操作要麼都成功,要麼都不成功。

  • C (Consistent ): 一致性。事物提交前所涉及的數據保持一個狀態,事物提交完後所有涉及的數據保持一個狀態。即不會被打斷導致所涉及的數據更新一部分,導致不一致性。

  • I(Isolation):隔離性,兩個事物互不影響。不會一個事物影響到另一個事物的操作。

  • D(Durability):持久性。事物提交後對數據的更改已經記錄在磁盤。

  • 髒讀:在一個事物內讀取到了不正確的值。

  • 不可重複讀: 在同一個事物內,重複讀一條數據時,前後兩次值不一樣。

  • 幻讀: 同一事物內的兩次查詢,得到的結果記錄卻不一樣。即事物第一次讀取到一行,第二次查詢讀到3行。

  • 數據庫事物的隔離級別有4種:未提交讀,提交讀,可重複讀,串行。

  • 未提交讀: 即A事物更新表test(id,name)的一個記錄比如(1,33)更新爲(1,65),更新語句執行完畢,但是事物A沒有提交,此時B事物讀取id=1的記錄,則此時讀取到的是65.即事物可以讀取到另一個事物內未提交的更改。會造成的問題是髒讀。

  • 即如果A事物回滾了,此時記錄還是(1.33),那麼B事物讀取的值就不對了,再次讀取的值就是33,這也造成了不可重複讀。

  • 提交讀:即事物提交後,其所做的改變纔會被另一個事物讀取到。

  • 可重複讀:即一個事物內不管是否有另外的事物對其查詢的記錄做了改變,其前後讀取的值是一樣的。

  • 串行:串行即事物A在執行時,事物B則等待。

  • 未提交讀: 髒讀,不可重複讀,幻讀都可能會發生。

  • 提交讀:不可重複讀和幻讀會發生。

  • 可重複讀:幻讀會發生。mysql默認事物級別。

  • 串行: 都不會發生。

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