MySQL數(shù)據(jù)庫(kù)管理與開發(fā)課件 第15章 事務(wù)與鎖機(jī)制_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與開發(fā)課件 第15章 事務(wù)與鎖機(jī)制_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與開發(fā)課件 第15章 事務(wù)與鎖機(jī)制_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與開發(fā)課件 第15章 事務(wù)與鎖機(jī)制_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)管理與開發(fā)課件 第15章 事務(wù)與鎖機(jī)制_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論