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