一致性非鎖定讀和一致性鎖定讀

2021-10-09 21:00:24 字數 727 閱讀 5236

在預設配置下innodb的隔離級別是repeatable read,innodb的select操作使用的是一致性非鎖定讀

一致性的非鎖定行讀(consistent nonlocking read,簡稱cnr)是指innodb儲存引擎通過行多版本控制(multi versioning)的方式來讀取當前執行時間資料庫中執行的資料。如果讀取的行正在執行delete、update操作,這時讀取操作不會因此而會等待行上鎖的釋放,相反,innodb儲存引擎會去讀取行的乙個快照資料

之所以稱為非鎖定讀,是因為不需要等待訪問資料行上的x鎖的釋放。快照資料是指該行之前版本的資料,通過undo段來實現(undo用來在事務中回滾資料)。

在read committed和repeatable read模式下,innodb儲存引擎使用預設的一致性非鎖定讀。在read committed隔離級別下,對於快照資料,一致性非鎖定讀總是讀取被鎖定行的最新乙份快照資料;而在repeatable read隔離級別下,對於快照資料,一致性非鎖定讀總是讀取事務開始時的行資料版本。

預設情況下,innodb儲存引擎的select操作使用一致性非鎖定讀,但是在某些情況下,需要對讀操作進行加鎖以保證資料邏輯的一致性。innodb儲存引擎對select語句支援2種一致性鎖定讀(locking read)操作;

一致性非鎖定讀與一致性鎖定讀

一致性非鎖定讀 consistent nonlocking read 是指innodb儲存引擎通過 行多版本控制 multi versioning 的方式來讀取當前執行時間資料庫中行的資料。如果讀取的行正在執行delete或update操作,這時讀取操作不會因此去等待行上鎖的釋放,相反地,innod...

mysql InnoDB一致性非鎖定讀(MVCC)

一致性非鎖定讀 consistent nonlocking read 指innodb儲存引擎通過多版本控制的方法來讀取當前執行時間資料庫中行的資料。如果讀取的資料行正在執行delete或update操作,這時讀取不會因此去等待行上鎖 的釋放。相反innodb儲存引擎會去讀取乙個快照資料。之所以成為非...

資料讀一致性

undo段由兩個元件組成 undo頭和undo入口。undo段的第一塊是undo頭。undo被建立時僅有undo頭被建立。保留時間表 retention table 這是自動管理undo新增的乙個元件。儲存了undo段中每乙個區最後乙個事務提交的時間。事務表 transaction table 儲存...