持續(xù)非鎖定讀 |
發(fā)布時(shí)間: 2012/8/24 17:43:27 |
持續(xù)讀意味著InnoDB使用它的多版本化來給一個(gè)查詢展示某個(gè)時(shí)間點(diǎn)處數(shù)據(jù)庫的快照。查詢看到在那個(gè)時(shí)間點(diǎn)之前被提交的那些確切事務(wù)做的更改,并且沒有其后的事務(wù)或未提交事務(wù)做的改變。這個(gè)規(guī)則的例外是,查詢看到發(fā)布該查詢的事務(wù)本身所做的改變。 如果你運(yùn)行在默認(rèn)的REPEATABLE READ隔離級別,則在同一事務(wù)內(nèi)的所有持續(xù)讀讀取由該事務(wù)中第一個(gè)這樣的讀所確立的快照。你可以通過提交當(dāng)前事務(wù)并在發(fā)布新查詢的事務(wù)之后,為你的查詢獲得一個(gè)更新鮮的快照。
持續(xù)讀是默認(rèn)模式,在其中InnoDBzai在READ COMMITTED和REPEATABLE READ隔離級別處理SELECT語句。持續(xù)讀不在任何它訪問的表上設(shè)置鎖定,因此,其它用戶可自由地在持續(xù)讀在一個(gè)表上執(zhí)行的同一時(shí)間修改這些表。
注意,持續(xù)讀不在DROP TABLE和ALTER TABLE上作用。持續(xù)讀不在DROP TABLE上作用,因?yàn)镸ySQL不能使用已經(jīng)被移除的表,并且InnoDB 破壞了該表。持續(xù)讀不在ALTER TABLE上作用,因?yàn)樗谀呈聞?wù)內(nèi)執(zhí)行,該事務(wù)創(chuàng)建一個(gè)新表,并且從舊表往新表中插入行。現(xiàn)在,當(dāng)你重新發(fā)出持續(xù)讀之時(shí),它不能在新表中看見任何行,因?yàn)樗鼈儽徊迦氲揭粋(gè)在持續(xù)讀讀取的快照中不可見的事務(wù)里。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |