版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【核心素養(yǎng)】第25課 周亞夫軍細(xì)柳 教案 統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 第二單元化學(xué)反應(yīng)速率與化學(xué)平衡(大單元教學(xué)設(shè)計(jì))高二化學(xué)同步備課系列(人教版2019選擇性必修1)
- 冀教版(三起)英語(yǔ)三年級(jí)下冊(cè)Unit1-Unit4教學(xué)設(shè)計(jì)
- DB5103-T 45-2024 兔養(yǎng)殖技術(shù)規(guī)范 主要疫病防控
- 第二單元第四課群文閱讀 教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 2024商場(chǎng)地產(chǎn)九九重陽(yáng)節(jié)游園市集(富桂重陽(yáng)養(yǎng)生食事主題)活動(dòng)策劃方案-46P
- 裝修工程質(zhì)量預(yù)控方案
- 水電站機(jī)電設(shè)備安裝工程施工組織設(shè)計(jì)計(jì)劃
- 成立公司的計(jì)劃書(4篇)
- 車位出租合同范本(30篇)
- 食品微生物考博問答題終級(jí)版浙江大學(xué)江南大學(xué)
- 統(tǒng)編版語(yǔ)文六年級(jí)上冊(cè):第三單元習(xí)作~讓生活更美好 課件
- 惡劣天氣檢查表
- 江蘇省無(wú)錫市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 關(guān)于事業(yè)單位崗位設(shè)置幾點(diǎn)體會(huì)
- 中藥學(xué)講稿(張廷模)-精校
- 《主題墻的設(shè)計(jì)與指導(dǎo)》(幼兒園課件)
- 職業(yè)健康危害因素清單與控制措施
- 高速公路項(xiàng)目高邊坡質(zhì)量控制要點(diǎn)
- 2022-2023學(xué)年高中政治統(tǒng)編版必修一:2.2社會(huì)主義制度在中國(guó)的確立 課件(25張)
- 大學(xué)課程安排管理辦法
評(píng)論
0/150
提交評(píng)論