1. 程式人生 > >GAP LOCK——間隙鎖

GAP LOCK——間隙鎖

什麼是間隙鎖?
這是mysql資料庫中的一種鎖,它會出現在如下場景中
我們向表中新增一條資料age=20,這條資料在本來是沒有的,在insert還沒有提交的時候去select * from tableA a where a.age>15 and a.age<25,這個時候就會觸發間隙鎖,我們必須等待insert提交後才能執行select語句

為什麼會出現間隙鎖?
在MySQL的innoDB引擎中,如果操作的是一個區間的資料,會鎖住這個區間所有的記錄,即使這個記錄不存在,這個時候另一個會話去插入這個區間的資料,就必須等待上一個結束。