MySQL學習之事務與并發(fā)控制
目錄
事務概念特性原子性一致性隔離性持久性并發(fā)控制undo logread viewLBCC事務
概念
一個事務可以理解為一組操作,這一組操作要么全部執(zhí)行,要么全部不執(zhí)行。
特性
原子性
一個事務是一個獨立的原子單元,一個事務內(nèi)所有的操作,要么全部執(zhí)行,要么全部不執(zhí)行。關注的是一組操作的執(zhí)行結果(全部成功or全部失?。J峭ㄟ^undo log實現(xiàn)的。
(資料圖片)
一致性
看了網(wǎng)上很多博客對一致性的講解,總覺得沒有說到點子上,我就從我的個人角度來說說對一致性的理解:
一個事務使得數(shù)據(jù)庫從一個狀態(tài)A0,轉(zhuǎn)換到另一個狀態(tài)A1。相鄰的兩個狀態(tài)轉(zhuǎn)換之間,只能有一個事務起作用。如果當前狀態(tài)A0轉(zhuǎn)換到下一個狀態(tài)A1,之間包括了2個事務,則說明有一個事務的effect被覆蓋了。如事務并發(fā)問題中的丟失更新,典型的例子是轉(zhuǎn)賬問題,A向B轉(zhuǎn)賬,同時C也向B轉(zhuǎn)賬,最后會發(fā)現(xiàn)A或者C轉(zhuǎn)過去的錢不見了,這種例子隨便一搜就有,不贅述。用轉(zhuǎn)賬問題來解釋一致性,比較好理解,因為錢的總數(shù)應該是確定的,比如B本來有1000,A向B轉(zhuǎn)100,C向B轉(zhuǎn)200,那么B賬戶上最后應該有1300,然而最終我們可能看到是1100或1200,因為有一個人的操作被覆蓋掉了。其實這也就是說,B賬戶的錢,從一個狀態(tài),到另一個狀態(tài),中間有2個事務起了effect,這樣是不對的。事務具有隔離性,數(shù)據(jù)庫的每一個狀態(tài),應該都有且僅有一個與之對應的事務在take effect。
隔離性
不同的事務之間,應該是不能互相影響的。
4種隔離級別
Read UncommitRead CommitRepetable ReadSerializableRU相當于沒有隔離,RC和RR是用MVCC實現(xiàn)(具體是通過undo log 和 read view),Serializable是用鎖實現(xiàn),事務串行執(zhí)行。
查看當前的隔離級別
select @@tx_isolation; -- mysql 8的變量名變?yōu)槿缦碌男问?select @@transaction_isolation; -- 設置隔離級別 set transacation_isolation = "隔離級別名"
數(shù)據(jù)庫隔離級別是一種需求,不同的隔離級別有對應的實現(xiàn)方式。
持久性
事務執(zhí)行成功后(提交后),對數(shù)據(jù)庫的更改是永久性的(即寫到磁盤)。是通過redo log + Force Log at Commit機制實現(xiàn)的
事務并發(fā)問題
丟失更新
第一類丟失更新
針對同一行數(shù)據(jù),事務A先開始,事務B后開始,事務B提交,隨后事務A回滾,則回滾會導致將事務B已提交的修改給覆蓋掉。這個問題在現(xiàn)在的數(shù)據(jù)庫軟件中已不會產(chǎn)生
第二類丟失更新
針對同一行數(shù)據(jù),事務A先開始,事務B后開始,事務A提交,隨后事務B提交,則事務B將事務A的修改給覆蓋掉了
臟讀
事務A讀到了事務B未提交的數(shù)據(jù),事務B后回滾,則事務A讀到的是臟數(shù)據(jù)
不可重復讀
事務A連續(xù)2次讀一行記錄,讀取到的是不一樣的。這是由于A連續(xù)2次讀的中間,事務B對這行記錄做了更新。
幻讀
表現(xiàn)為兩次讀取的數(shù)據(jù)數(shù)量不一致,發(fā)現(xiàn)變多了,或者變少了。
比如我讀取age > 10 的學生數(shù)據(jù),第一次讀發(fā)現(xiàn)有10個學生,第二次讀發(fā)現(xiàn)有20個學生,就好像出現(xiàn)了幻覺一樣,同樣的查詢條件,兩次讀取發(fā)現(xiàn)有學生增加或減少。
事務命令
MySQL命令行下默認是autocommit的,即事務會自動提交。要顯示開啟一個事務,需使用命令BEGIN
或START TRANSACTION
BEGIN
或START TRANSACTION
開啟事務COMMIT
提交事務ROLLBACK
回滾事務
并發(fā)控制
兩種并發(fā)控制策略
MVCC
Multi-Version Concurrency Control
核心理念是快照,InnoDB主要通過undo log 和 read view來實現(xiàn)MVCC。
**讀不加鎖,讀寫不互斥。**讀會從多個版本的數(shù)據(jù)中挑選一個合適的版本返回。寫操作會產(chǎn)生一個新的版本。
每一行的記錄,會包含3個隱藏字段:row_id,tx_id,roll_ptr
其中tx_id表示最近操作該行記錄的事務id,roll_ptr則是回滾指針,指向一條undo log記錄,即指向該次改動之前的數(shù)據(jù)
undo log
insert undo log
由insert操作產(chǎn)生,可在事務提交后直接刪除。因為insert操作只對當前事務本身可見,其他事務不可見
update undo log
由update/delete產(chǎn)生。是對已有記錄的修改,為了提供MVCC機制,該undo log不能在事務提交后就刪除,而需要等待purge線程來進行最后的刪除
使用update修改當前行時,首先用X鎖鎖定,然后將該行當前值復制到undo log,然后再執(zhí)行修改,最后填寫事務id,并使回滾指針指向undo log中修改前的行
read view
用于判斷數(shù)據(jù)可見性的一個數(shù)據(jù)結構,里面存儲了
當前活躍事務的最小id:min_id當前活躍事務的最大id:max_id當前活躍事務id list:ids若讀取到的某一行的某個版本tx_id < min_id,則說明此行的該版本在本次事務開啟之前就已經(jīng)提交,故這個數(shù)據(jù)對本次事務可見。
若讀取到的某一行的某個版本tx_id >= max_id,說明此行的該版本在本次事務開啟之后才開始進行修改,故這個數(shù)據(jù)對本次事務不可見。
若讀取到的某一行的某個版本tx_id在min_id和max_id之間,則判斷此行的tx_id是否在ids內(nèi),若是,表明此行的事務還在活躍中,此行數(shù)據(jù)不可見,否則,說明此行的事務已經(jīng)提交,此行數(shù)據(jù)可見
簡單來說,若在某一時刻開啟了一個事務A,則會記錄下事務A開啟時,還活躍著的其他事務(記下這些活躍事務的id,保存為一個set,比如叫ids),這些事務按照開始的時間先后,會有從小到大的事務id(tx_id),tx_id小的事務,說明是先開啟的,tx_id大的事務,說明是后開啟的。若在事務A中,讀取到某一行數(shù)據(jù),這一行數(shù)據(jù)的tx_id小于ids中最小的id(min_id),說明這一行數(shù)據(jù)對應的事務,已提交過了(已不活躍了),這一行數(shù)據(jù)的修改已經(jīng)持久化,故該行數(shù)據(jù)對事務A來說是可見的。若這一行數(shù)據(jù)的tx_id大于或等于ids中的最大id,說明有一個事務,在事務A開始之后,才開始對這一行數(shù)據(jù)進行修改,故該行數(shù)據(jù)對事務A不可見。若這一行數(shù)據(jù)的tx_id,在min_id和max_id之間,那么就判斷這個tx_id是不是在ids中,即對這行數(shù)據(jù)進行修改的那個事務,還在不在活躍的事務列表中,若在,說明修改這行數(shù)據(jù)的事務還沒提交,這行數(shù)據(jù)還沒持久化,故不可見,反之,說明這行數(shù)據(jù)的修改已經(jīng)持久化,故可見。
RC隔離級別下,在一個事務中,每次讀取數(shù)據(jù)都會新建一個ReadView。所以可能會產(chǎn)生不可重復讀的問題,因為在兩次讀之間,有其他事務對數(shù)據(jù)進行了修改,而兩次讀時都新建了ReadView,故第二次讀的時候,修改后的數(shù)據(jù)是可見的。
RR隔離級別下,在一個事務中,第一次讀取時會新建一個ReadView,后序讀取都使用這個ReadView。所以哪怕在兩次讀之間,有其他事務修改了數(shù)據(jù),也不會產(chǎn)生不可重復讀的問題。因為第二次讀,并沒有新建ReadView,而是使用了一開始創(chuàng)建的那個ReadView,所以數(shù)據(jù)可見性和第一次是一樣的。
MVCC中,讀操作分為兩類:快照讀,當前讀
快照讀(一致性非鎖定讀)讀取的時記錄的可見版本(可能是歷史版本),不加鎖。
當某一行被一個事務A加了X鎖時,另一個事務B仍然可以讀取該行,只不過讀取的是歷史版本。
-- 簡單select SELECT * FROM product;當前讀
讀取的是記錄的最新版本,當前讀返回的記錄,會加鎖,保證了其他并發(fā)事務不能修改當前記錄
SELECT * FROM product lock in share mode; SELECT * FROM product for update; insert .... update .... delete ....
LBCC
LCC
Lock-Based Concurrency Control
讀加讀鎖,寫加寫鎖。讀讀不互斥,讀寫,寫寫互斥。Serilizable的隔離級別是通過LBCC實現(xiàn)的
以上就是MySQL學習之事務與并發(fā)控制的詳細內(nèi)容,更多關于MySQL事務與并發(fā)控制的資料請關注腳本之家其它相關文章!
關鍵詞:
責任編輯:hnmd004
-
顯卡風扇不轉(zhuǎn)了影響大嗎?顯卡風扇轉(zhuǎn)好還是不轉(zhuǎn)好?
顯卡風扇不轉(zhuǎn)了影響大嗎?1、風扇轉(zhuǎn)動主要是使顯卡散熱,如果在顯卡工作是達到一定的溫度,風扇會自動轉(zhuǎn)起,控制顯卡溫度,保護顯卡。當?shù)陀谶@一
2023-07-07 15:57:38 -
word文件損壞打不開怎么修復?word文件損壞亂碼怎么修復?
word文件損壞打不開怎么修復?1 打開Microsoft Word軟件,點擊文件菜單,選擇打開命令。2 找到損壞的Word文件,選中文件后點擊打開按鈕
2023-07-07 10:51:03 -
0xc0000005錯誤代碼怎么解決?應用程序0xc0000005是什么錯誤?
0xc0000005錯誤代碼怎么解決?1、首先按下win+r打開運行,輸入regedit按下回車。2、隨后依次定位到:HKEY_LOCAL_MACHINE SOFTWARE Microsoft
2023-07-07 10:47:09 -
java環(huán)境變量配置后不生效什么原因?怎樣看java環(huán)境變量是否配置成功?
java環(huán)境變量配置后不生效什么原因?1 檢查系統(tǒng)是否支持java,即查看java的版本。如果沒有安裝,需要安裝java環(huán)境。2 檢查配置文件是否正確
2023-07-07 10:43:40 -
ios17什么時候可以更新正式版?ios17什么時候正式推送更新?
ios17什么時候可以更新正式版?ios17正式版預計9月可以更新使用,屆時和iPhone15系列新機一起到來。目前,ios17 Beta版在WWDC23發(fā)布會結束后
2023-07-07 10:40:52 -
Win11打游戲FPS低怎么辦?手機玩游戲幀數(shù)低怎么辦?
Win11打游戲FPS低怎么辦?1、進入Win11系統(tǒng)桌面上,點擊開始選擇設置進入。2、進入設置界面,點擊游戲進入。3、在游戲頁面,點擊游戲模式進
2023-07-07 10:38:03 -
電腦開不了機怎么辦按哪個鍵?電腦開不了機怎么強制開機?
電腦開不了機怎么辦按哪個鍵?F8:進入 Windows 安全模式。F10:進入 BIOS 設置界面。F11:進入系統(tǒng)恢復界面。Del:進入 BIOS 設置界
2023-07-06 11:14:10 -
顯卡風扇不轉(zhuǎn)正常嗎?顯卡風扇不轉(zhuǎn)怎么解決?
顯卡風扇不轉(zhuǎn)正常嗎?顯卡風扇不轉(zhuǎn)是不正常的。1、灰塵過多可能是顯卡上的灰塵太多了,導致堵塞,如果長時間不清理的話,顯卡的風扇就會因為
2023-07-06 11:02:33 -
windowshello突然不能用怎么辦?windows hello在哪里設置?
windowshello突然不能用怎么辦?1、首先按下WIN+R,輸入 services msc 回車2、在服務列表中查找 Windows Biometric Service 看這個服
2023-07-06 10:53:30 -
不支持已連接的usb設備怎么解決?無法識別的usb設備是什么意思?
不支持已連接的usb設備怎么解決?需要格式化。USB不支持已連接的設備,是因為U盤文件系統(tǒng)要FAT32格式,需要重新設置U盤格式,先格式化U盤,將U盤
2023-07-06 08:45:03 -
打開dwg格式的軟件有哪些?dwg格式文件是什么文件?
打開dwg格式的軟件有哪些?1、看圖紙DwgSeePlus,一款dwg文件瀏覽器;2、CAD迷你看圖,一款小巧的DWG文件瀏覽小工具;3、CAD迷你畫圖,一款CAD
2023-07-06 08:42:40 -
電腦突然沒聲音了是什么原因?電腦突然沒聲音了怎么解決?
電腦突然沒聲音了是什么原因?一起跟著小編來看看吧。電腦沒有聲音的原因是計算機硬件問題和軟件問題,硬件問題主要是聲卡壞了,或者輸出聲
2023-07-05 10:24:15 -
amd是哪個國家的品牌?英特爾和amd哪個厲害?
amd是哪個國家的品牌?amd處理器是美國生產(chǎn)的;美國AMD半導體公司專門為計算機、通信和消費電子行業(yè)設計和制造各種創(chuàng)新的微處理器,以及提供
2023-07-05 10:21:36 -
tmp文件可以隨便刪嗎?tmp文件刪不掉怎么辦?
tmp文件可以隨便刪嗎?是的,可以刪除。 tmp文件是一種臨時文件,它們通常由操作系統(tǒng)或應用程序創(chuàng)建,以存儲暫時數(shù)據(jù)。一旦完成,它們就會被
2023-07-05 10:19:30 -
mkv格式手機可以看嗎?蘋果不支持mkv視頻嗎?
mkv格式手機可以看嗎?可以的。 MKV并不是一種壓縮格式,而是Matroska的一種媒體文件,是一種多媒體封裝格式,或叫多媒體容器。 它可將多種不
2023-07-05 10:16:45 -
電腦開機慢特別卡怎么解決?電腦開機慢系統(tǒng)啟動慢什么原因?
電腦開機慢特別卡怎么解決?好多小伙伴不知道如何解決的,那小編就把操作方法分享給大家吧,感興趣的小伙伴可以參考看看哈。方法一: 減少
2023-07-05 10:11:39 -
zip壓縮文件怎么繞過密碼?已有的壓縮包如何添加密碼?
zip壓縮文件怎么繞過密碼?好多小伙伴不知道的,那小編就來給大家解答一下吧,希望可以幫助到大家吧。1、首先在電腦中,啟用英文版nsis,2、
2023-07-05 10:07:06 -
文件后綴隱藏了怎么顯示出來?怎么讓文件顯示擴展名?
文件后綴隱藏了怎么顯示出來?一起來看看吧。1、首先,雙擊打開【計算機】,打開計算機磁盤目錄,2、打開后,正常菜單欄是沒有顯示出來,打
2023-07-04 10:01:15 -
php文件的擴展名是什么?怎么修改php上傳文件的大?。?/a>
php文件的擴展名是什么?php文件后綴名就是 php文件擴展名和標簽為了讓服務器來確定我們的PHP文件和腳本,我們必須保存的文件以 php結尾。怎
2023-07-04 09:56:02 -
電腦的文件恢復區(qū)在哪里找?恢復文件已損壞怎么辦?
電腦的文件恢復區(qū)在哪里找?1、1 360文件恢復區(qū)打開【360安全衛(wèi)士】→【木馬查殺】,找到并單擊左下角的【恢復區(qū)】,就可以找到360文件
2023-07-04 09:52:57 -
ipad游戲沒有聲音怎么回事?ipad打游戲沒有聲音怎么辦?
ipad游戲沒有聲音怎么回事?1、ipad游戲沒有聲音可能是忘記開聲音或者設置了靜音,打開聲音或者關閉靜音。2、ipad上的游戲設置沒有啟用聲音
2023-07-04 09:42:32 -
電腦快捷方式存在問題是什么原因?快捷方式存在問題怎么解決?
電腦快捷方式存在問題是什么原因?Win11電腦快捷方式可能會出現(xiàn)問題,主要是由于系統(tǒng)更新、病毒感染或者其他原因?qū)е碌摹?旖莘绞酱嬖趩栴}怎
2023-07-04 09:34:09 -
DAT是什么文件擴展名?bmp是什么文件擴展名?
DAT是什么文件擴展名? dat文件有兩種類型:1、VCD的媒體文件,是數(shù)據(jù)流格式,可以用一般的視頻播放器打開,該類型文件也是MPG格式的,是VCD
2023-07-03 09:48:00 -
mp3文件格式不支持怎么辦?mp3格式是什么格式?
mp3文件格式不支持怎么辦?是不是好多小伙伴遇到這樣的問題不知道如何解決的,那小編就把方法分享給大家吧,感興趣的小伙伴可以參考看看哈。
2023-07-03 09:44:46 -
任務管理器被禁用怎么解除?任務管理器中沒有菜單欄如何解決?
任務管理器被禁用怎么解除?好多小伙伴不知道如何解決的,那小編就把方法給大家解答一下吧,希望可以幫助到大家吧。1、開始 運行 gpedit msc
2023-07-03 09:40:26
精彩推薦
閱讀排行
最新資訊
- MySQL學習之事務與并發(fā)控制
- 很多家長暑期為孩子選購學習機 老師:學...
- TCL中環(huán)公布最新單晶硅片價格
- 夢網(wǎng)科技與華為簽署盤古大模型合作協(xié)議...
- 恒生電子與華為云簽署AI大模型聯(lián)合創(chuàng)新協(xié)議
- 金冠電氣股東擬合計減持不超5.702%股份
- 猛料扒到了!神秘央企出手,接下奧園增...
- 錫業(yè)股份:錫業(yè)分公司停產(chǎn)檢修
- 合肥市長豐縣舉辦2023年區(qū)域價值發(fā)布會...
- 全市住房公積金結息2.15億元
- 濟源示范區(qū)頒發(fā)首批農(nóng)村土地承包經(jīng)營權...
- 共和報:米蘭希望出售梅西亞斯,要價100...
- 純租賃住房小區(qū)電動汽車充電難?回應來了
- 國家防辦、應急管理部:持續(xù)開展隱患排...
- 左藍微電子完成近億元B輪融資 潤科基金領投
- 今天國際上半年凈利潤預增78%-97%
- 金冠電氣:三名股東擬合計減持不超5.7%股份
- 老舊小區(qū)“逆生長” 改造改在居民“心...
- 誠邦股份:上半年預虧1600萬元到1900萬...
- 太平鳥上半年凈利潤預增約89%
- 滬一阿姨昏迷倒地,公交車司機"公主抱"...
- 雅安發(fā)布一批人事任免
- 南方精工:上半年預虧850萬元-1550萬元...
- 普利制藥:注射用更昔洛韋(0.25g)一致...
- 天奇股份:與富奧股份簽署合作備忘錄
- 中簡科技:上半年凈利預增8.33%-19.16%
- 中國天楹:簽署3462萬歐元垃圾焚燒發(fā)電...
- 個人提取三亞公積金需滿足什么條件?你...
- 動物精神治療(動物精神)
- 僑銀股份:中標棗莊薛城區(qū)城市大管家合...
- 港股上市公司世紀??聘麨?ldquo;交個朋友...
- 報告顯示二季度房地產(chǎn)市場持續(xù)轉(zhuǎn)弱 多...
- 辰安科技:針對芯片領域布局孵化產(chǎn)業(yè)公...
- 鵬輝能源:下半年公司工商業(yè)儲能產(chǎn)品預...
- 寶馬女司機醉駕撞人拖行一審判6年,受害...
- 定了!北京57個老舊小區(qū)將改造!
- 長飛光纖:子公司完成中廣核惠州港口二...
- 快手搜索內(nèi)測短視頻直播行業(yè)首個智能問...
- 榮旗科技:融資凈償還626.29萬元,融資...
- 青香木圖片 清香木圖片
- 燕京啤酒還未放棄蔡徐坤
- 【每日天氣】今天南部和東部強降雨持續(xù)...
- 江核臨江“雙子星”出場前奏
- “苔花開”第三屆鄉(xiāng)村兒童美育成果展,...
- 保利發(fā)展上半年簽約額2368億元 6月281...
- 信達證券給予鹽津鋪子買入評級 緊握“...
- 德邦證券給予敏芯股份買入評級 定增加...
- 民生證券給予亞太股份推薦評級 2023年...
- 晉城2個拆遷改造問題回復!
- 捷成股份與華為簽署合作協(xié)議 面向AIGC...
- 明確位置!約477.3畝!灣里大項目要來了!
- 貴州省127站出現(xiàn)大暴雨 防汛應急響應提...
- 超級一線城市,率先松綁!
- 蘋果VisionPro考慮2024年底在中國銷售
- 住建部長喊話試點現(xiàn)房銷售,今年第5次動...
- 夜讀丨她,不僅僅是“書寫”了一個勵志故事
- 滴滴一季度營收同比增長19%至427億元 ...
- 瀚川智能發(fā)布100PPM全極耳大圓柱高速自...
- 突發(fā)!國機汽車攤上事兒
- 大慶油田上半年生產(chǎn)原油超過1500萬噸
- 巨量千川可以投視頻嗎
- 斗羅大陸:瞬移技能爛大街?一集出現(xiàn)四...
- 久安電視國際傳媒集團董事長呂奕(久安...
- 開源證券給予保利發(fā)展買入評級 公司信...
- 2023-2024年度貴陽貴安住房公積金繳存比...
- 我愛我家總部急發(fā)多條短信:杭州公司高...
- 城市管家服務中心在龍華區(qū)大浪街道啟用...
- 天風證券給予鑫宏業(yè)買入評級 新能源特...
- 消息傳來,紹興這幾個村要拆遷了!
- 西南證券給予新國都買入評級 牌照續(xù)展...
- 西南證券給予利爾化學買入評級 上半年...
- 中泰證券給予長城汽車買入評級 新能源...
- 市少年兒童錦標賽 手球比賽決出名次
- 主播說聯(lián)播丨辦賽與興城,就要這樣完美...
- 龍華首個電商婦聯(lián)在福城街道成立
- 福城街道關愛騎手 送上暖心營養(yǎng)午餐
- 河西區(qū)發(fā)布人才服務政策16條
- 民生證券給予嘉環(huán)科技推薦評級 事件點...
- 10分鐘首簽產(chǎn)生!鳳溪“城中村”改造項...
- 民生證券給予姚記科技推薦評級 深度報...
- 民生證券給予保利發(fā)展推薦評級 2023年...
- 阿嬌一生有一個“仙樂”就夠了,卻還偏...
- 蘭州西固區(qū)南山小區(qū)棚改戶改造項目規(guī)劃...
- 廊坊市不動產(chǎn)登記中心關于2023年4月-6月...
- 中銀證券給予瀘州老窖買入評級 公司股...
- 香港酒類產(chǎn)品實現(xiàn)深圳前?!白杂尚小?/a>
- 信達證券給予中國中免買入評級 23H1業(yè)...
- 約1355畝,蘭州將持續(xù)發(fā)力改造這37個老...
- 簽約率突破95%,市中區(qū)澇坡村拆遷安置房...
- 文化服務提質(zhì)升級!福田區(qū)文化空間“星...
- 寧夏產(chǎn)品獲評“圳品” 47個產(chǎn)品已獲“...
- 放心消費在大鵬 大鵬市場監(jiān)管局強化民...
- 民生證券給予嘉環(huán)科技推薦評級 事件點...
- 四川:年內(nèi)啟動四項“三農(nóng)”領域省級地...
- “130鵬城千社助就業(yè)”行動啟動
- BMD馬棕及大連棕櫚油價格上周走高
- 全省首張!韶關南雄頒發(fā)農(nóng)村土地承包經(jīng)...
- “質(zhì)優(yōu)量減”已成土地市場新特征
- 深港各界紀念新安縣建縣450周年專題聯(lián)展...
- 突破900萬大關!深圳地鐵單日客運量再創(chuàng)新高
-
純租賃住房小區(qū)電動汽車充電難?回應來了
上一篇2023-07-09 17:35:18