版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第15章事務(wù)與鎖機(jī)制01事務(wù)機(jī)制03AI輔助編程02鎖機(jī)制事務(wù)機(jī)制1主要內(nèi)容事務(wù)的概念1事務(wù)機(jī)制的必要性2關(guān)閉MySQL自動(dòng)提交3事務(wù)回滾4事務(wù)提交5MySQL中的事務(wù)6回退點(diǎn)7事務(wù)的概念事務(wù)的概念
事務(wù)是指一組相互依賴的操作單元的集合,用來(lái)保證對(duì)數(shù)據(jù)庫(kù)的正確修改,保持?jǐn)?shù)據(jù)的完整性,如果一個(gè)事務(wù)的某個(gè)單元操作失敗,將取消本次事務(wù)的全部操作。事務(wù)的概念事務(wù)的概念A(yù)賬戶B賬戶向B賬戶轉(zhuǎn)入資金將資金退回A賬戶失敗事務(wù)的概念原子性(Atomicity)數(shù)據(jù)庫(kù)事務(wù)所具備的特征:一致性(Consistency)隔離性(Isolation):在并發(fā)環(huán)境中,一個(gè)事務(wù)所做的修改必須與其它事務(wù)所做的修改相隔離。持久性(Durability)事務(wù)機(jī)制的必要性事務(wù)機(jī)制的必要性賬戶A500元賬戶B0元賬戶表事務(wù)機(jī)制的必要性實(shí)現(xiàn)從借記卡賬戶A向B轉(zhuǎn)賬400元,成功后再?gòu)腁向B轉(zhuǎn)賬300元。實(shí)例關(guān)閉MySQL自動(dòng)提交關(guān)閉MySQL自動(dòng)提交DELIMITER//CREATEPROCEDUREproc_transfer(INid_fromINT,INid_toINT,INmoneyint)READSSQLDATABEGINUPDATEtb_accountSETbalance=balance+moneyWHEREid=id_to;UPDATEtb_accountSETbalance=balance-moneyWHEREid=id_from;END//存儲(chǔ)過(guò)程proc_transfer的代碼如下:AUTOCOMMIT關(guān)閉MySQL自動(dòng)提交顯式關(guān)閉自動(dòng)提交功能SHOWVARIABLESALTERTABLEAUTOCOMMIT0隱式關(guān)閉自動(dòng)提交功能STARTTRANSACTION;AUTOCOMMIT事務(wù)回滾事務(wù)回滾實(shí)現(xiàn)從借記卡賬戶A向B轉(zhuǎn)賬300元,出錯(cuò)時(shí)進(jìn)行事務(wù)回滾。實(shí)例事務(wù)提交 顯式提交COMMIT隱式提交BEGINSETAUTOCOMMIT=1LOCKTABLESSTARTTRANSACTIONCREATEDATABASE/TABLE/INDEX/PROCEDUREUNLOCKTABLESTRUNCATETABLEALTERDATABASE/TABLE/INDEX/PROCEDURE
RENAMETABLEDROPDATABASE/TABLE/INDEX/PROCEDURE
MySQL中的事務(wù)MySQL中的事務(wù)STARTTRANSACTION;語(yǔ)法格式如下:STARTTRANSACTIONMySQL中的事務(wù)這里還是以db_bank數(shù)據(jù)庫(kù)為例進(jìn)行操作。創(chuàng)建存儲(chǔ)過(guò)程,并且在該存儲(chǔ)過(guò)程中創(chuàng)建事務(wù),實(shí)現(xiàn)從借記卡賬戶A向B轉(zhuǎn)賬300元,出錯(cuò)時(shí)進(jìn)行事務(wù)回滾。實(shí)例事務(wù)執(zhí)行流程開啟一個(gè)事務(wù)數(shù)據(jù)庫(kù)初始狀態(tài)事務(wù)回滾執(zhí)行數(shù)據(jù)庫(kù)操作判斷事務(wù)的執(zhí)行情況更新后的數(shù)據(jù)庫(kù)狀態(tài)提交事務(wù)成功失敗回退點(diǎn)回退點(diǎn)回退點(diǎn)又稱保存點(diǎn)回退點(diǎn)SAVEPOINT回退點(diǎn)名;設(shè)置回退點(diǎn)的語(yǔ)法格式如下:SAVEPOINTROLLBACKTOSAVEPOINT定義的回退點(diǎn)名;回滾到指定的回退點(diǎn)的語(yǔ)法格式如下:回退點(diǎn)創(chuàng)建一個(gè)名稱為prog_savepoint_account的存儲(chǔ)過(guò)程,在該存儲(chǔ)過(guò)程中創(chuàng)建一個(gè)事務(wù),實(shí)現(xiàn)向tb_account表中添加一個(gè)賬戶C,并且向該賬戶存入500元。然后從A賬戶向B賬戶轉(zhuǎn)賬300元。當(dāng)出現(xiàn)錯(cuò)誤時(shí),回滾到提前定義的回退點(diǎn),否則提交事務(wù)。實(shí)例鎖機(jī)制2主要內(nèi)容MySQL鎖機(jī)制的基本知識(shí)1MyISAM表的表級(jí)鎖2InnoDB表的行級(jí)鎖3死鎖的概念與避免4MySQL鎖機(jī)制的基本知識(shí)MySQL鎖機(jī)制的基本知識(shí)一行記錄讀取修改刪除鎖的類型讀鎖(ReadLock)寫鎖(WriteLock)共享鎖(SharedLock)排他鎖(ExclusiveLock)鎖粒度
鎖粒度是指鎖的作用范圍。原則是讓鎖定對(duì)象更有選擇性。也就是盡量只鎖定部分?jǐn)?shù)據(jù),而不是所有的資源。鎖粒度越小,越適合做并發(fā)更新操作。鎖粒度越大,越適合做并發(fā)查詢操作。鎖策略
鎖策略是指在鎖的開銷和數(shù)據(jù)的安全性之間尋求平衡。鎖策略表級(jí)鎖(TableLock)行級(jí)鎖(RowLock)表級(jí)鎖是MySQL中最基本的鎖策略,而且是開銷最小的策略。行級(jí)鎖可以最大程度地支持并發(fā)處理,同時(shí)也帶來(lái)了最大的鎖開銷。鎖的生命周期
鎖的生命周期是指在一個(gè)MySQL會(huì)話內(nèi),對(duì)數(shù)據(jù)進(jìn)行加鎖到解鎖之間的時(shí)間間隔。盡可能的縮短鎖的生命周期。MyISAM表的表級(jí)鎖MyISAM表的表級(jí)鎖COMMITROLLBACK以讀方式鎖定數(shù)據(jù)表演示以讀方式鎖定db_bank數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù)表tb_user。實(shí)例以寫方式鎖定數(shù)據(jù)表LOCKTABLE要鎖定的數(shù)據(jù)表WRITE;以寫方式鎖定數(shù)據(jù)表的語(yǔ)法格式如下:以寫方式鎖定數(shù)據(jù)表仍然以數(shù)據(jù)表tb_user為例進(jìn)行演示。這里演示以寫方式鎖定用戶表tb_user。實(shí)例InnoDB表的行級(jí)鎖InnoDB表的行級(jí)鎖InnoDB表表級(jí)鎖行級(jí)鎖MyISAM表InnoDB表的行級(jí)鎖SELECT語(yǔ)句LOCKINSHAREMODE;在查詢語(yǔ)句中設(shè)置讀鎖,其語(yǔ)法格式如下:SELECT*FROMtb_accountLOCKINSHAREMODE;InnoDB表的行級(jí)鎖SELECT語(yǔ)句FORUPDATE;在查詢語(yǔ)句中設(shè)置寫鎖,其語(yǔ)法格式如下:SELECT*FROMtb_accountFORUPDATE;InnoDB表的行級(jí)鎖在更新語(yǔ)句中,InnoDB存儲(chǔ)引擎自動(dòng)為更新語(yǔ)句影響的記錄添加隱式寫鎖。InnoDB表的行級(jí)鎖通過(guò)事務(wù)實(shí)現(xiàn)延長(zhǎng)行級(jí)鎖的生命周期。實(shí)例死鎖的概念與避免死鎖的概念與避免
死鎖,即當(dāng)兩個(gè)或者多個(gè)處于不同序列的用戶打算同時(shí)更新某相同的數(shù)據(jù)庫(kù)時(shí),因互相等待對(duì)方釋放權(quán)限而導(dǎo)致雙方一直處于等待狀態(tài)。MySQL的InnoDB表處理程序具有檢查死鎖這一功能。AI輔助編程3主要內(nèi)容在存儲(chǔ)過(guò)程中創(chuàng)建事務(wù)和回退點(diǎn)1以讀方式鎖定產(chǎn)品數(shù)據(jù)庫(kù)中的產(chǎn)品信息數(shù)據(jù)表2小結(jié)
本章詳細(xì)講解了MySQL中事務(wù)與鎖機(jī)制的相關(guān)的知識(shí),其中事務(wù)機(jī)制主要包括事務(wù)的概念、事務(wù)機(jī)制的必要性、事務(wù)回滾和提交以及MySQL中創(chuàng)建事務(wù);在鎖機(jī)制中,主要介紹了MySQL鎖機(jī)制的基本知識(shí)、如何為MyIS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇徐州市泉山國(guó)有資產(chǎn)投資經(jīng)營(yíng)有限公司投后管理崗招聘考試(第二輪)考試備考試題及答案解析
- 2026福建泉州幼兒師范高等專科學(xué)校招聘15人考試備考題庫(kù)及答案解析
- exo介紹英語(yǔ)教學(xué)課件
- 2026山東淄博市淄川區(qū)事業(yè)單位招聘教師20人考試參考試題及答案解析
- 2026湖南常德市西洞庭食品工業(yè)園投資開發(fā)有限公司招聘人員筆試備考試題及答案解析
- 德陽(yáng)經(jīng)濟(jì)技術(shù)開發(fā)區(qū)第四幼兒園2026年春期面向社會(huì) 公開招聘“兩自一包”非在編教職工招聘考試參考試題及答案解析
- 2026河北興冀人才資源開發(fā)有限公司外包人員招聘49人考試備考試題及答案解析
- 2026重慶智匯人才開發(fā)有限公司永川分公司招聘2人考試備考題庫(kù)及答案解析
- 2025-2026廣東中山南區(qū)街道招聘公辦幼兒園臨聘教職工7人考試參考試題及答案解析
- 2026中石油新疆銷售有限公司博州分公司招聘4人考試備考題庫(kù)及答案解析
- 2026年國(guó)有企業(yè)金華市軌道交通控股集團(tuán)招聘?jìng)淇碱}庫(kù)有答案詳解
- 綜合醫(yī)院心身疾病診治
- 港口安全生產(chǎn)管理模版
- 健康中國(guó)2030規(guī)劃綱要考試題庫(kù)含答案全套
- 產(chǎn)房與兒科交接登記表
- 韓國(guó)語(yǔ)topik單詞-初級(jí)+中級(jí)
- 克林頓1993年就職演講+(中英文)
- 四川省房屋建筑工程和市政基礎(chǔ)設(shè)施工程竣工驗(yàn)收?qǐng)?bào)告
- 商業(yè)倫理與會(huì)計(jì)職業(yè)道德(第四版)第五章企業(yè)對(duì)外經(jīng)營(yíng)道德規(guī)范
- DB13 5161-2020 鍋爐大氣污染物排放標(biāo)準(zhǔn)
- 安全隱患排查工作檢查表
評(píng)論
0/150
提交評(píng)論