mysql事務四大特性教程?事務 ACID 特性原子性(Atomicity):最小的工作單元,整個工作單元要麼一起提交成功,要麼全部失敗回滾,現在小編就來說說關于mysql事務四大特性教程?下面内容希望能幫助到你,我們來一起看看吧!
事務 ACID 特性
原子性(Atomicity):最小的工作單元,整個工作單元要麼一起提交成功,要麼全部失敗回滾。
一緻性(Consistency):事務中操作的數據及狀态改變是一緻的,即寫入資料的結果必須完全符合預設的規則,不會因為出現系統意外等原因導緻狀态的不一緻。
隔離型(Isolation):一個事務所操作的數據在提交之前,對其他事務的可見性設定(一般設定為不可見)。
持久性(Durability):事務所做的修改就會永久保存,不會因為系統意外導緻數據的丢失。
事務并發帶來了哪些問題
髒讀
髒讀發生在一個事務A讀取了被另一個事務B修改,但是還未提交的數據。假如B回退,則事務A讀取的是無效的數據。這跟不可重複讀類似,但是第二個事務不需要執行提交。
不可重複讀
在基于鎖的并行控制方法中,如果在執行select時不添加讀鎖,就會發生不可重複讀問題。
在多版本并行控制機制中,當一個遇到提交沖突的事務需要回退但卻被釋放時,會發生不可重複讀問題。
幻讀
幻讀發生在當兩個完全相同的查詢執行時,第二次查詢所返回的結果集跟第一個查詢不相同。
發生的情況:沒有範圍鎖。
事務四種隔離級别
SQL92 ANSI/ISO标準
Read Uncommitted(未提交讀) --未解決并發問題
事務未提交對其他事務也是可見的,髒讀(dirty read)
Read Committed(提交讀) --解決髒讀問題
一個事務開始之後,隻能看到自己提交的事務所做的修改,不可重複讀(non repeatable
read)
快照讀總是能讀到最新的行數據快照,當然,必須是已提交事務寫入的
Repeatable Read(可重複讀) --解決不可重複讀問題
在同一個事務中多次讀取同樣的數據結果是一樣的,這種隔離級别未定義解決幻讀的問題。
某個事務首次 read 記錄的時間為 T,未來不會讀取到 T 時間之後已提交事務寫入的記錄,以保證連續相同的 read 讀到相同的結果集。
Serializable(串行化) --解決所有問題
最高的隔離級别,通過強制事務的串行執行
說明:
InnDB 引擎默認的事務隔離級别是可重複讀(Repeatable Read),在該級别中它把幻讀的問題也解決了。InnDB 中事務隔離級别通過鎖、MVCC 實現
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!