mysql事務基本要素和隔離級別

2021-10-01 02:39:09 字數 1197 閱讀 1170

注意:只是個人理解的手記,不具備權威準確性

mysql事務基本要素和隔離級別

一.事務的四個基本要素

1.原子性:事務中的操作要麼都執行,要麼都回滾

2.一致性:a和b存款各位500,相互轉賬總額保持1000不變,對開發者有要求,不能寫出錯誤邏輯

3.隔離性:多事務併發時,保證各事務處理互不干擾,有四個隔離級別,在併發和干擾之間權衡(需要深入學習鎖知識)

4.永續性:事務一旦提交,資料一定持久化到資料庫,不可回滾,除非執行相反操作事務,mysql通過日誌實現的.

二.事務的隔離級別

1.讀取未提交

a事務會讀取到b事務未提交的更新內容

缺點:如果b回滾了,a會讀取到b的中間狀態,可造成髒讀

2.讀取已提交

a事務可以讀取到b事務提交的更新內容,

優點:因為只可以讀b提交的內容,所以解決了1中的髒讀問題

缺點:a事務前後查詢的結果可能不一致,可造成不可重複讀

3.可重複讀

a事務讀取的記錄總是第一次查詢的快照,無論b事務提交更新,都不會影響a的查詢結果

優點:因為a讀取的都是第一次查詢的快照,所以解決了2中不可重複讀的問題,也不會出現1髒讀

缺點:b事務插入的新記錄a中是查詢不到的,但是a事務進行的增刪改會讀取最新記錄,可造成幻讀

擴充套件:可重複讀下間隙鎖(gap lock)可以鎖定乙個範圍,防止資料插入避免部分幻讀(需要繼續深入學習鎖知識)

4.序列化

a查詢資料,b可以查詢資料,但是b不可以再增刪改資料

優點:避免了3中的幻讀,當然1的髒讀和2的不可重複讀也不會出現

缺點:增刪改無併發

三.不同隔離性引發的問題

髒讀:讀到了別人未提交的內容

不可重複讀:讀到了別人update的內容

幻讀:未讀到別人insert或delete的內容,但是增刪改時卻存在

四.操作

1.檢視全域性和當前會話隔離級別

select @@global.tx_isolation, @@tx_isolation;

2.設定全域性或當前會話隔離級別

set [global | session] transaction isolation level

repeatable read

| read committed

| read uncommitted

| serializable

事務的基本要素 事務的隔離級別

事務是訪問資料庫的乙個操作序列,資料庫應用系統通過事務集來完成對資料庫的訪問。事務管理對於企業級應用而言至關重要,它保證了使用者的每一次操作都是可靠的,即便出現了異常的訪問情況,也不至於破壞後台資料的完整性。就像銀行的自動提款機atm,通常atm都可以正常為客戶服務,但是也難免遇到操作過程中及其突然...

MySQL的事物基本要素及四種事務隔離級別

原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,事務執行過程 錯,會回滾到事務原來狀態 一致性 consistency 事務開始前和結束後,資料庫的完整性約束沒有被破壞 比如a向b轉賬,不可能a扣了錢,b卻沒收到。隔離性 isolation 同一時間,只允許乙個事務請求同...

資料庫事務基本要素ACID

資料庫事務具有4個特徵,分別是原子性 一致性 隔離性和永續性,簡稱事務的acid特性 乙個事務要麼全部提交成功,要麼全部失敗回滾,不能只執行其中的一部分操作,這就是事務的原子性 事務的執行不能破壞資料庫資料的完整性和一致性,乙個事務在執行之前和執行之後,資料庫都必須處於一致性狀態。如果資料庫系統在執...