MySQL

Gap lock & Next key lock

lejpower 2021. 7. 8. 12:56

Locking Read에서 팬텀리드를 막기 위해 사용하는 것이 Next key lock구조다.

이는 Row Lock과 Gap Lock을 조합한 것이다. 여기서 말하는 Gap이라는 것은 행과 행 사이의 논리적인 공간을 말한다. 행 사이에 물리적으로 공간이 있다는 뜻은 아니다. Gap Lock은 "행 사이"라는 객체가 있다고 가정하고 Lock을 거는 것을 말한다. 이러한 논리적인 행 사이에 Lock을 걸어 그 행 사이에 새로운 행이 삽입되지 않도록 한다. 다시 말해 Gap에 Lock을 걸면 Insert는 블록 된다.