外貿(mào)網(wǎng)站建設(shè)海外推廣網(wǎng)絡(luò)銷售真惡心
MVCC多版本并發(fā)控制機(jī)制
多版本=多個(gè)undo日志
什么時(shí)候會(huì)獲取到事務(wù)id
事務(wù)id的生成并不是通過begin/start/transaction命令得到的,是在執(zhí)行第一個(gè)修改操作或者加入排他鎖操作,才會(huì)向mysql申請(qǐng)真正的事務(wù)id,mysql內(nèi)部是嚴(yán)格按照事務(wù)的啟動(dòng)順序來分配事務(wù)id的
(不加鎖的查詢操作分配的是臨時(shí)事務(wù)id)
RR隔離級(jí)別MVCC的可見性算法
在可重復(fù)讀隔離級(jí)別,當(dāng)事務(wù)開啟,執(zhí)行任何查詢sql時(shí)會(huì)生成當(dāng)前事務(wù)的一致性視圖read-view,該視圖在事務(wù)結(jié)束之前都不會(huì)變化(如果是讀已提交隔離級(jí)別都會(huì)重新生成)這個(gè)視圖由執(zhí)行查詢時(shí)所有未提交事務(wù)id數(shù)組(數(shù)組中最小的id)和已創(chuàng)建的最大事務(wù)id組成
通過reda-view的版本鏈進(jìn)行比對(duì)的版本鏈比對(duì)規(guī)則
已提交的事務(wù)是可見的,未開始的事務(wù)是不可見的
一致性視圖read-view:【100,200】,300
min_id = 100
Max_id=300
當(dāng)trx_id<min_id,可見
trx_id>max_id,不可見
min_id<=trx_id<=max_id,如果trx_id在數(shù)組(【100,200】)當(dāng)中則不可見,反之可見