mysql 事務學習

來源:互聯網
上載者:User

標籤:持久性   bsp   mysql 事務   一個   層級   序列化   comm   ali   分割   

1.事務

  邏輯上的一組操作,組成這組操作的各個邏輯單元要麼一起成功,要麼一起失敗.

2.事務特性

原子性:強調事務的不可分割.
一致性:強調的是事務的執行的前後,資料的完整性要保持一致.
隔離性:一個事務的執行不應該受到其他事務的幹擾.
持久性:事務一旦結束(提交/復原)資料就持久保持到了資料庫.

 

3.事務的安全性問題

 

髒讀 :一個事務讀到另一個事務還沒有提交的資料.
不可重複讀取:一個事務讀到了另一個事務已經提交的update的資料,導致在當前的事務中多次查詢結果不一致.
虛讀/幻讀:一個事務讀到另一個事務已經提交的insert的資料,導致在當前的事務中多次的查詢結果不一致.

 

4.事務的隔離等級

  MYSQL隔離等級:repeatable read Oracle隔離等級:read committed  
  * read uncommitted
    現象:未提交讀.髒讀,不可重複讀取,虛讀都可能發生.
    原因:在讀取時是不會加鎖的,但在更新資料時,對其加行級共用鎖定(其它事務不能更改,但可以讀取,導致髒讀),事務結束時釋放。
  * read committed
    現象:已提交讀.避免髒讀.但是不可重複讀取和虛讀有可能發生.
    原因:這種隔離等級表示讀取的資料是已提交成功的,解決了髒讀問題,解決方式是給寫資料加行級獨佔鎖定,這樣寫過程是無法讀取的,直到交易處理完畢才釋放獨佔鎖定,給讀的資料加行級共用鎖定,這樣讀的時候也是無法寫的,但是一旦讀完該行就釋放共用鎖定。這種模式下雖然處理了髒讀,但是並沒有處理丟失更新和不可重複讀取的問題.
  * repeatable read
    現象:重複讀.避免髒讀,不可重複讀取.但是虛讀有可能發生.
    原因:在這種隔離等級下可以重複的讀取資料了,顧名思義,解決了不可重複讀取的問題,同時也解決了更新丟失的問題。解決辦法:給寫的資料加行級獨佔鎖定,事務結束釋放,給讀的資料加行級共用鎖定,事務結束後釋放。這種模式還是沒有處理幻讀的問題
  * serializable
    現象:序列化的.避免髒讀,不可重複讀取,虛讀的發生.
    原因:事務讀資料則加表級共用鎖定,事務寫資料則加表級獨佔鎖定,幻讀問題也得到瞭解決

5.解決

  隔離等級       產生問題

read uncommitted
            髒讀
read committed
            髒讀不可重複讀取
repeatable read
            不可重複讀取
serializable
            虛讀/幻讀

 

mysql 事務學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.