持續(xù)非鎖定讀 |
發(fā)布時間: 2012/8/24 17:43:27 |
持續(xù)讀意味著InnoDB使用它的多版本化來給一個查詢展示某個時間點處數(shù)據(jù)庫的快照。查詢看到在那個時間點之前被提交的那些確切事務做的更改,并且沒有其后的事務或未提交事務做的改變。這個規(guī)則的例外是,查詢看到發(fā)布該查詢的事務本身所做的改變。 如果你運行在默認的REPEATABLE READ隔離級別,則在同一事務內(nèi)的所有持續(xù)讀讀取由該事務中第一個這樣的讀所確立的快照。你可以通過提交當前事務并在發(fā)布新查詢的事務之后,為你的查詢獲得一個更新鮮的快照。
持續(xù)讀是默認模式,在其中InnoDBzai在READ COMMITTED和REPEATABLE READ隔離級別處理SELECT語句。持續(xù)讀不在任何它訪問的表上設置鎖定,因此,其它用戶可自由地在持續(xù)讀在一個表上執(zhí)行的同一時間修改這些表。
注意,持續(xù)讀不在DROP TABLE和ALTER TABLE上作用。持續(xù)讀不在DROP TABLE上作用,因為MySQL不能使用已經(jīng)被移除的表,并且InnoDB 破壞了該表。持續(xù)讀不在ALTER TABLE上作用,因為它在某事務內(nèi)執(zhí)行,該事務創(chuàng)建一個新表,并且從舊表往新表中插入行,F(xiàn)在,當你重新發(fā)出持續(xù)讀之時,它不能在新表中看見任何行,因為它們被插入到一個在持續(xù)讀讀取的快照中不可見的事務里。 本文出自:億恩科技【www.itdijia.com】 |