目錄
什麼是事務?
acid
原子性(atomicity)
一致性(consistency)
隔離性(isolation)
永續性(durability)
事務併發問題
事務隔離級別
一組原子性的sql指令集合,要麼全部執行成功,要麼全部執行失敗。
整個事務所有操作要麼全部提交成功,要麼全部失敗回滾,不可能只成功一部分。
事務中操作的資料及狀態改變是一致的,即寫入資料的結果必須完全符合預設的規則,不會因為出現系統意外等原因導致狀態的不一致。
通常來說,乙個事務所做的修改在最終提交以前,對其它事務是不可見的。多個事務之間的操作相互不影響。
事務提交後,事務對資料庫的所有更新將被儲存到資料庫,且無法撤回。一旦乙個事務已經提交了,就算伺服器崩潰,仍然需要在下次啟動的時候結合事務日誌自動恢復。
髒讀事務a讀取了事務b更新的資料,然後b回滾操作,那麼a讀取到的資料是髒資料。
不可重複讀
事務a多次讀取同一條資料,事務b在事務a執行的過程中,對資料作了更新並提交,導致事務a多次讀取同一資料時,結果不一致。
幻讀事務a對多次讀取某一範圍的資料,事務b在事務a執行的過程中插入並提交一條滿足a讀取範圍的資料,使a發現資料變多了,猶如產生幻覺一般。
隔離級別
說明髒讀
不可重複讀
幻讀讀未提交(read-uncommitted)
效能沒有明顯優勢,同時缺乏其他級別的好處,因此很少使用。是是
是讀已提交(read-committed)
大多數資料庫的預設級別,只能看到已提交的事務,避免了髒讀,但相同查詢可能讀到不同結果。否是
是可重複讀(repeatable-read)
mysql預設級別,可能產生幻讀。否否
innodb 否
序列化(serializable)
在讀取的每行資料上都加鎖,強制事務序列執行,會導致大量超時與鎖競爭問題,一般很少使用。否否
否
MySQL事務的特性
事務具有很嚴格的定義,必須同時滿足4個特徵 原子性 一致性 隔離性 永續性,也就是人們常說的acid標準 原子性,是指乙個事務必須被視為,乙個不可分割的最小工作單元,只有事務中所有的資料庫操作都執行成功,才算整個事務執行成功 事務中,如果有任何乙個sql語句執行失敗,已經執行成功的sql語句,也必須...
MySQL 事務和特性
事務是資料庫操作的最小工作單位,乙個事務可以是一條sql語句,也可以是一組sql語句。事務有四大特徵 原子性,永續性,隔離性,一致性,就是我們常說的acid 原子性的意思是說乙個事務裡的操作會組成乙個最小的執行單位,不可再分割,在乙個事務中,要麼操作都成功,要麼都失敗。比較經典的例子就是我們的轉賬,...
mysql的事物特性 MySQL事務特性及隔離級別
事務的4個特性 在mysql中,innodb和bdb型別表可以支援事務。通過innodb和bdb型別表,mysql事務能夠完全滿足事務安全的acid測試,但是並不是所有表型別都支援事務,如myisam型別表就不能支援事務,只能通過偽事務對錶實現事務處理。acid指出每個事務型rdbms必須遵守的4個...