在事務(wù)隔離級(jí)別設(shè)定為repeatable read的情況下,一般的select語(yǔ)句采取的是一致性非阻塞讀的方式。
一致性是指在事務(wù)的范圍內(nèi)讀取的數(shù)據(jù)是可重現(xiàn)的,不會(huì)出現(xiàn)不可重復(fù)讀的情況。非阻塞是指這種讀取數(shù)據(jù)的模式不會(huì)對(duì)數(shù)據(jù)上任何一種鎖,其它操作全都不會(huì)被阻塞。
在這種模式下,事務(wù)執(zhí)行讀取語(yǔ)句后,相關(guān)的數(shù)據(jù)會(huì)有一套副本出現(xiàn),并會(huì)為這個(gè)數(shù)據(jù)副本附加一個(gè)時(shí)間戳,其它事務(wù)在這個(gè)時(shí)間戳之后執(zhí)行的寫操作都不會(huì)反映到這個(gè)副本中,這種機(jī)制被稱之為多版本并發(fā)控制。
如果用select …… lock in share mode,則不是一致性非阻塞讀,該語(yǔ)句會(huì)等待其它事務(wù)的寫語(yǔ)句提交或回滾之后再讀取數(shù)據(jù);如果事務(wù)隔離級(jí)別設(shè)置為read committed,也不是一致性非阻塞讀,該語(yǔ)句會(huì)讀取其它事務(wù)提交的數(shù)據(jù)。