MySQL 中的間隙鎖是一種在多個事務同時訪問同一個索引范圍時進行加鎖的機制。間隙鎖的左端點是開區間,即不包括指定值,而右端點是閉區間,即包括指定值。
SELECT * FROM table WHERE id >10 AND id< 20 FOR UPDATE;
在執行以上 SQL 語句時,會鎖定 id 值大于 10 小于等于 19 的所有行。這個時候如果另一個事務想要插入一個 id 值為 15 的記錄,就會被間隙鎖阻塞,也就是說插入操作不能成功進行,直到第一個事務結束或者回滾。
需要注意的是,如果使用了等于號,則鎖定的就是關鍵字所在的行,而不是整個區間。例如,下面的 SQL 語句將鎖定 id 值為 10 的行。
SELECT * FROM table WHERE id = 10 FOR UPDATE;
MySQL 中的間隙鎖在并發處理的情境下非常有用,在高并發訪問時可以有效的控制數據競爭,避免臟讀等并發問題的出現。但是,需要注意的是間隙鎖會在一定程度上影響性能,過多的間隙鎖會導致系統性能下降,需要適度使用。
上一篇css的梗
下一篇css的漸變屬性主要包括