2
使用可重複讀取隔離時,您可以保證使用SELECT讀取的行不會被修改,直到事務完成。使用可重複讀取隔離時,SELECT .. FOR UPDATE的用途是什麼?
這似乎與SELECT .. FOR UPDATE提供的類似。
那麼在使用可重複讀隔離時使用SELECT FOR UPDATE有什麼意義?
使用可重複讀取隔離時,您可以保證使用SELECT讀取的行不會被修改,直到事務完成。使用可重複讀取隔離時,SELECT .. FOR UPDATE的用途是什麼?
這似乎與SELECT .. FOR UPDATE提供的類似。
那麼在使用可重複讀隔離時使用SELECT FOR UPDATE有什麼意義?
當您在Repeatable Read下讀取記錄時,您將獲得讀取鎖定,但其他事務也會獲得讀取鎖定,這可能會阻止您稍後進行更新。使用FOR UPDATE可以通知任何其他需要讀鎖的事務,他們應該等到完成更新記錄爲止。
因此,在使用FOR UPDATE時,實質上是對選定的行應用「寫入」鎖定? – pdeva
不是寫鎖,還沒有。只要確保沒有其他人阻止你獲得寫入鎖定。這有時稱爲讀意向寫鎖(也有意向讀鎖)。 – cliffordheath
如果它阻止其他線程獲得讀取或寫入鎖定,那麼它與寫入鎖定有什麼不同? – pdeva