事務隔離級別

  • 事務隔離是數據庫處理的基礎之一,Isolation是ACID中I的縮寫,當多個事務同時進行更改和執行查詢時,隔離級別是微調性能和可靠性、一致性和結果再現性之間的平衡的設置
  • MySQL支持以下幾個隔離級別
    • REPEATABLE READ (innodb使用的默認級別)
    • READ COMMITTED
    • READ UNCOMMITTED
    • SERIALIZABLE
  • REPEATABLE READ(當執行一個範圍查詢時,會發生幻讀問題)
    • 這是innodb默認的隔離級別,同一事務中的一致讀讀取由第一個讀取建立的快照,意味着如果你在同一個事務中發送多次一樣(沒有鎖的)的select語句,這些SELECT語句返回的結果在相互之間也是一致的。
  • READ COMMITTED(有不可重複讀問題)
    • 每一個一致讀,即使在同一事務中,都會設置並讀取它自己的新快照
  • READ UNCOMMITTED(有髒讀問題)
    • SELECT語句是在一個非鎖定的方式進行,但是有可能會使用更早版本的行數據,因此,使用這個隔離級別,讀不是一致的,稱之爲髒讀,否則,此隔離級別工作機制類似於
  • SERIALIZABLE(髒讀,不可重複讀,幻讀問題都不會發生)

    • 這個級別有點像REPEATABLE READ,但是innodb隱式的將所有SELECT語句傳喚成SELECT ... LOCK IN SHARE MODE除了autocommit 被禁止這種情況,如果啓用autocommit,則SELECT是它自己的事務。
  • 事務隔離主要的作用在於解決併發帶來的髒讀,不可重複讀,幻讀問題,詳細內容請看我的下一篇文章
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章