




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、MySQL事務(wù)和鎖事務(wù)和鎖張方雪張方雪大綱大綱 事務(wù) 隔離級(jí)別 MVCC 加鎖 死鎖 解決死鎖Transaction 集中類型的事務(wù): 扁平事務(wù) 帶有保存點(diǎn)的扁平事務(wù) 鏈?zhǔn)聞?wù) 嵌套事務(wù) 分布式事務(wù)ACIDIsolation Level StandardIsolation的各種實(shí)現(xiàn)的各種實(shí)現(xiàn) MyISAM 不支持事務(wù) 在 PostgreSQL 里,只有兩種獨(dú)立的隔離級(jí)別,RC和Serializable, 默認(rèn)RC. Oracle 跟PG差不多. Innodb 實(shí)現(xiàn)上完全支持者4個(gè)隔離級(jí)別, 默認(rèn)RR.設(shè)置隔離級(jí)別設(shè)置隔離級(jí)別select global.tx_isolation, tx_isola
2、tion;set global | session tx_isolation=read-commited;如果帶有g(shù)lobal, 那么從當(dāng)前時(shí)間往后, 創(chuàng)建的session都使用設(shè)置的級(jí)別, 如果是session關(guān)鍵字, 那么當(dāng)有當(dāng)前session被影響.Innodb MVCC InnoDB中每行隱含2個(gè)字段:更新或修改版本號(hào)和刪除版本號(hào)(可以為空),每一個(gè)事務(wù)開始也有自己的版本號(hào)且是遞增 MVCC的意義: 讀寫不沖突, 實(shí)現(xiàn)了可重復(fù)讀, 提高了性能.Innodb MVCC1. select 同時(shí)滿足2個(gè)條件的行,才能被返回:*行的被修改版本號(hào)當(dāng)前事務(wù)的版本號(hào),說明該行的是被該事務(wù)的后面啟動(dòng)事
3、務(wù)刪除過(接著看下去.)2. insert 對(duì)新插入的行,行的更新版本被修改為該事務(wù)的版本號(hào)3. delete 對(duì)于刪除,innodb直接把該行的被刪除版本號(hào)設(shè)置為當(dāng)前事務(wù)版本號(hào),相當(dāng)于標(biāo)記刪除,不是實(shí)際刪除4.update 在更新行的時(shí)候,innodb會(huì)把原來的行復(fù)制一份到回滾端的表空間中,若成功,并把當(dāng)前事務(wù)的版本號(hào)作為該行的更新版本號(hào),否則rollbackMVCC在在RC和和RR的區(qū)別的區(qū)別 RR下面, select 一直使用當(dāng)前事務(wù)最開始讀到的版本 RC下面, 每次select , 為了督導(dǎo)最新提交, 都會(huì)去讀最新的版本.Record lock A lock on an index r
4、ecord. For example, SELECT c1 FOR UPDATE FROM t WHERE c1 = 10; prevents any other transaction from inserting, updating, or deleting rows where the value of t.c1 is 10.Gap lock A lock on a gap between index records, or a lock on the gap before the first or after the last index record. Gap locks are p
5、art of the tradeoff between performance and concurrency, and are used in some transaction isolation levels and not others.Next-key lock A combination of a record lock on the index record and a gap lock on the gap before the index record 與之對(duì)應(yīng)的其實(shí)還有個(gè)Previous-key lock, Innodb使用Next-key lockIntension loc
6、k A kind of lock that applies to the table level, used to indicate what kind of lock the transaction intends to acquire on rows in the table. Different transactions can acquire different kinds of intention locks on the same table, but the first transaction to acquire an intention exclusive (IX) lock
7、 on a table prevents other transactions from acquiring any S or X locks on the table. Conversely, the first transaction to acquire an intention shared (IS) lock on a table prevents other transactions from acquiring any X locks on the table. 鎖之間的兼容關(guān)系鎖之間的兼容關(guān)系一致性非鎖定讀一致性非鎖定讀加鎖加鎖 基于MVCC機(jī)制, select操作是在讀取un
8、do中歷史數(shù)據(jù), 因?yàn)闅v史數(shù)據(jù)不需要修改, 所以不需要加任何鎖.Locking reads 一致性鎖定讀, 不會(huì)使用undo日志, 會(huì)直接對(duì)當(dāng)前記錄加鎖. select for update 會(huì)加x鎖, select lock in share mode 回家s鎖. 其他的都相同.提問提問 什么場景下, 需要使用select for update 而不是select in share mode?加鎖信息解讀加鎖信息解讀insert加鎖加鎖 Insert不會(huì)自己加鎖,而在插入之后,如果還沒有提交,此時(shí)正好有其它事務(wù)做更新或者刪除操作了,則這個(gè)操作會(huì)為這個(gè)插入操作加一把鎖,然后自己再加一把鎖 In
9、sert acts as if locked by itself. Update by primary key 如果要更新的記錄存在, 加一把 record lock. 如果記錄不存在, 加gap lock. 如果整張表是空的, gap lock鎖住(-INF, INF)Update by unique key 如果要更新的記錄存在, 在唯一鍵上有一把行鎖, 在主鍵上有一把行鎖 如果記錄不存在, 加gap lock.limit 對(duì)鎖的影響對(duì)鎖的影響 update limit 1, 只會(huì)對(duì)一條記錄加鎖Update by secondary key 如果記錄存在, 那么就對(duì)索引加next-key lock, 同時(shí)對(duì)所有更新的記錄加record lock 如果不存在, 那么就是一把gap lock range condition, 多把next-key lock.更多可以分析的例子更多可以分析的例子 聯(lián)合索引 join like .Deadlock處理死鎖處理死鎖 遇到死鎖直接回滾 超時(shí)機(jī)制(FIFO) Wait-for-graph(回滾undo量最小的)避免死鎖避免死鎖 R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025維修服務(wù)合同的樣本范文
- 農(nóng)村合作林業(yè)種植承包合同
- 美術(shù)設(shè)計(jì)師產(chǎn)品創(chuàng)新試題及答案
- 涼山某國企公開招聘派遣制工作人員(8人)筆試參考題庫附帶答案詳解
- 2025福建省輝穹工程咨詢有限公司招聘2人筆試參考題庫附帶答案詳解
- 2025河南鄭州空中絲路文化傳媒有限公司招聘6人筆試參考題庫附帶答案詳解
- 2025廣東省汕特建設(shè)集團(tuán)有限公司招聘專業(yè)技術(shù)人才4人筆試參考題庫附帶答案詳解
- 2025年福建武夷旅游集團(tuán)有限公司人才教育板塊自主招聘17人筆試參考題庫附帶答案詳解
- 2025年春季貴州磷化(集團(tuán))有限責(zé)任公司社會(huì)招聘139人筆試參考題庫附帶答案詳解
- 2025寧夏賀蘭山國家森林公園有限公司招募見習(xí)崗位人員11名筆試參考題庫附帶答案詳解
- 大學(xué)《思想道德與法治》期末考試復(fù)習(xí)題庫(含答案)
- 高三物理期中考試質(zhì)量分析
- 發(fā)生用藥錯(cuò)誤應(yīng)急預(yù)案
- 《智能媒體傳播》教學(xué)大綱
- 室內(nèi)栓、滅火器檢查卡表格及要求
- 【制藥廢水預(yù)處理技術(shù)的發(fā)展綜述報(bào)告6000字(論文)】
- 《銷售技巧課件:提高銷售額的12種方法》
- 精神障礙社區(qū)康復(fù)服務(wù)投標(biāo)方案
- 果蔬汁簡介介紹
- 神經(jīng)形態(tài)計(jì)算詳述
- 廣東御景木業(yè)有限公司年產(chǎn)木質(zhì)門8萬套建設(shè)項(xiàng)目環(huán)境影響報(bào)告書
評(píng)論
0/150
提交評(píng)論