mySQL教學(xué)第10章事務(wù)和鎖ppt課件_第1頁(yè)
mySQL教學(xué)第10章事務(wù)和鎖ppt課件_第2頁(yè)
mySQL教學(xué)第10章事務(wù)和鎖ppt課件_第3頁(yè)
mySQL教學(xué)第10章事務(wù)和鎖ppt課件_第4頁(yè)
mySQL教學(xué)第10章事務(wù)和鎖ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第10章 事務(wù)和鎖微軟最有價(jià)值專家MVP)IT集成課程視頻教學(xué)下載地址91xueit本章內(nèi)容o 10.1 事務(wù)Transact引見o 10.2 事務(wù)的特性o 10.3 事務(wù)的類型o 10.4 事務(wù)控制語(yǔ)句o 10.5 事務(wù)并發(fā)產(chǎn)生的問題o 10.6 鎖 表級(jí)鎖 行級(jí)鎖o 10.7 事務(wù)和鎖綜合練習(xí)10.1事務(wù)(Transact)引見o 事務(wù)是指一個(gè)邏輯單元的工作任務(wù),這些工作任務(wù)要么全做,要么全部放棄。o 它必須同時(shí)滿足四個(gè)特性:o 原子性o 一致性o 隔離性o 持久性10.2事務(wù)特性1o 原子性Atomic)o 表示組成一個(gè)事務(wù)的多個(gè)數(shù)據(jù)庫(kù)操作是一個(gè)不可分隔的原子單元,只有所有的操作執(zhí)行成功

2、,整個(gè)事務(wù)才提交,事務(wù)中任何一個(gè)數(shù)據(jù)庫(kù)操作失敗,已經(jīng)執(zhí)行的任何操作都必須撤銷,讓數(shù)據(jù)庫(kù)返回到初始狀態(tài)。o 一致性Consistency)o 事務(wù)操作成功后,數(shù)據(jù)庫(kù)所處的狀態(tài)和它的業(yè)務(wù)規(guī)則是一致的,即數(shù)據(jù)不會(huì)被破壞。事務(wù)特性2o 隔離性Isolation)o 在并發(fā)數(shù)據(jù)操作時(shí),不同的事務(wù)擁有各自數(shù)據(jù)空間,它們的操作不會(huì)對(duì)對(duì)方產(chǎn)生干擾。數(shù)據(jù)庫(kù)規(guī)定了多種事務(wù)隔離級(jí)別,不同隔離級(jí)別對(duì)應(yīng)不同的干擾程度,隔離級(jí)別越高,數(shù)據(jù)一致性越好,但并發(fā)性越弱。o 持久性Durabiliy) o 一旦事務(wù)提交成功后,事務(wù)中所有的數(shù)據(jù)操作都必須被持久化到數(shù)據(jù)庫(kù)中,即使提交事務(wù)后,數(shù)據(jù)庫(kù)馬上崩潰,在數(shù)據(jù)庫(kù)重啟時(shí),也必須能保

3、證能夠通過某種機(jī)制恢復(fù)數(shù)據(jù)。 10.3事務(wù)類型1o 自動(dòng)提交事務(wù)o 系統(tǒng)默認(rèn)每個(gè)TRANSACTSQL命令都是一個(gè)事務(wù)處理,由系統(tǒng)自動(dòng)開始并提交o 隱式事務(wù):不需要顯示開始事務(wù),需要顯示提交o 該類事務(wù)是任何單獨(dú)的 INSERT、UPDATE 或者DELETE語(yǔ)句構(gòu)成。當(dāng)有大量的DDL和DML命令執(zhí)行時(shí)會(huì)自動(dòng)開始,并一直保持到用戶明確提交為止。事務(wù)類型2o 顯式事務(wù)o 該類事務(wù)是用戶自定義事務(wù),是以START TRANSACTION事務(wù)開始開頭,以 COMMIT TRANSACTION事務(wù)提交或者 ROLLBACK TRANSACTION回滾事務(wù)語(yǔ)句結(jié)束的。o 分布式事務(wù) o 跨越多個(gè)服務(wù)器的

4、事務(wù)稱為分布式事務(wù)。自從mySQL5.03就開始支持分布式事務(wù)。10.4事務(wù)控制1o START TRANSACTIONo 該語(yǔ)句標(biāo)記一個(gè)顯式事務(wù)的開始點(diǎn),即事務(wù)開始。其語(yǔ)法如下:o START TRAN | TRANSACTION o transaction_name | tran_name_variable WITH MARK description ; o COMMIT TRANSACTIONo 該語(yǔ)句標(biāo)志一個(gè)成功的隱性事務(wù)或顯式事務(wù)的結(jié)束,即事務(wù)提交。其語(yǔ)法如下:o COMMIT TRAN | TRANSACTION o transaction_name | tran_name_var

5、iable ; .事務(wù)控制2o ROLLBACK TRANSACTION o 該語(yǔ)句將顯式事務(wù)或隱性事務(wù)回滾到事務(wù)的起點(diǎn)或事務(wù)內(nèi)的某個(gè)保存點(diǎn)。其語(yǔ)法如下:o ROLLBACK TRAN | TRANSACTION o transaction_name | tran_name_variableo | savepoint_name | savepoint_variable ; o SET AUTOCOMMIT 可以修改當(dāng)前連接事務(wù)提交方式。o SET AUTOCOMMIT=0,則需要明確的命令進(jìn)行提交或者回滾。10.5 數(shù)據(jù)并發(fā)的問題1o 1.臟讀Dirty Read)o 臟讀是指某個(gè)事務(wù)A讀取另

6、外事務(wù)B尚未提交的更改數(shù)據(jù),并在這個(gè)數(shù)據(jù)的基礎(chǔ)上操作。如果恰巧 B事務(wù)回滾,那么 A事務(wù)讀到的數(shù)據(jù)根本是不被承認(rèn)的。o 2.不可重復(fù)讀Unrepeatable Read) o 不可重復(fù)讀是指 A事務(wù)讀取了 B事務(wù)已經(jīng)提交的更改數(shù)據(jù)。數(shù)據(jù)并發(fā)的問題2o 3. 幻象讀Phantom Read) o A事務(wù)讀取B事務(wù)提交的新增數(shù)據(jù),這時(shí) A事務(wù)將出現(xiàn)幻象讀的問題。 o 4. 第一類丟失更新o A事務(wù)撤銷時(shí),把已經(jīng)提交的B事務(wù)的更新數(shù)據(jù)覆蓋了。o 5. 第二類丟失更新 o A事務(wù)覆蓋B事務(wù)已經(jīng)提交的數(shù)據(jù),呵斥 B事務(wù)所做操作丟失。 10.6 鎖Lock)o 數(shù)據(jù)庫(kù)中的鎖是指一種軟件機(jī)制,用來(lái)控制防止某

7、個(gè)用戶進(jìn)程會(huì)話在已經(jīng)占用了某種數(shù)據(jù)資源時(shí),其他用戶做出影響本用戶數(shù)據(jù)操作或?qū)е聰?shù)據(jù)非完整性和非一致性問題發(fā)生的手段。o 鎖概述o MySQL鎖和數(shù)據(jù)庫(kù)引擎o InnoDB和MyISAM支持表級(jí)鎖o InnoDB事務(wù)實(shí)現(xiàn)的行級(jí)鎖MySQL鎖和數(shù)據(jù)庫(kù)引擎o 相對(duì)于其他數(shù)據(jù)庫(kù)而言,MySQL的鎖機(jī)制比較簡(jiǎn)單,最顯著的特點(diǎn)是不同的存儲(chǔ)引擎支持不同的鎖機(jī)制。o MyISAM和MEMORY存儲(chǔ)引擎采用表級(jí)鎖o DBD存儲(chǔ)引擎采用的是頁(yè)面鎖和表級(jí)鎖。o InnoDB支持行級(jí)鎖、表級(jí)鎖,默認(rèn)情況采用行級(jí)鎖。三種粒度鎖的特性o 表級(jí)鎖o 開銷小,加鎖快,不會(huì)出現(xiàn)死鎖,鎖定力度大,發(fā)生沖突所的概率高,并發(fā)度低。o

8、 行級(jí)鎖o 開銷大,加鎖慢,會(huì)出現(xiàn)死鎖,鎖定力度最小,發(fā)生鎖沖突的概率最低,并發(fā)度高。o 頁(yè)面鎖o 開銷和加鎖時(shí)間介于表鎖和行鎖之間,會(huì)出現(xiàn)死鎖,鎖定力度介于表和行行級(jí)鎖之間,并發(fā)度一般。MySQL表級(jí)鎖的鎖模式o 表共享鎖Table Read Lock)o 表獨(dú)占鎖Table Write)表級(jí)鎖o 給TStudent表和TScore表添加讀鎖o lock tables TStudent read,TScore read;o lock tables TStudent read local ,TScore read local;o Local參數(shù)允許在表尾并發(fā)插入o 如果加的read鎖,只能讀取

9、不能夠更改數(shù)據(jù),并且只能訪問加鎖的表。o 解鎖表o unlock tables添加表級(jí)寫鎖o 給TStudent表添加寫鎖o lock tables TStudent writeMySQL的InnoDB引擎行的鎖o 共享鎖S)o InnoDB引擎,共享鎖用于所有的只讀數(shù)據(jù)操作o 獨(dú)占鎖X)o 為修改數(shù)據(jù)而保留的,它所鎖定的資源,其他事務(wù)不能讀取也不能修改。o 意向共享鎖IS)o 意向獨(dú)占鎖IX)o 意向鎖是InnoDB內(nèi)部使用的,這兩種意向鎖都是表鎖,比如事務(wù)打算給行加共享鎖,先在表上添加IS鎖鎖與SQl語(yǔ)句o 對(duì)于Update Delete和Insert語(yǔ)句 InnoDB會(huì)自動(dòng)給涉及數(shù)據(jù)集加排它鎖o 對(duì)于select語(yǔ)句InnoDB不加任何鎖,可以顯示加鎖。o Select * from TStudent2 where studentid=00001 for update o Sele

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論