1. 程式人生 > >mysql 持續非鎖定讀

mysql 持續非鎖定讀

持續讀意味著InnoDB使用它的多版本化來給一個查詢展示某個時間點處資料庫的快照。查詢看到在那個時間點
之前被提交的那些確切事務做的更改,並且沒有其後的事務或未提交事務做的改變。這個規則的例外是,查詢
看到釋出該查詢的事務本身所做的改變。

如果你執行在預設的REPEATABLE READ隔離級別,則在同一事務內的所有持續讀讀取由該事務中第一個這樣
的讀所確立的快照
。你可以通過提交當前事務並在釋出新查詢的事務之後,為你的查詢獲得一個更新鮮的快
照。

在共享模式執行一個讀意味著我們讀最新的可用資料

 

Next-Key鎖定:避免幽靈問題. 該鎖定是不允許insert的,那麼為什麼允許update? 因為已存在的record, 有對應的快照資料

如果讀取的行正在執行delete或者update操作的時候,這時候的讀取操作不會等待行鎖的釋放,而是會去讀該行的一個快照資料

當tx_isolation=READ-COMMITTED,一致性非鎖定讀始終讀取最新的一份快照資料;

當tx_isolation=REPREATABLE READ,一致性非鎖定讀始終讀取事務begin時候的資料版本。