happy-developers / dev-interview

1 stars 1 forks source link

[DB] Lock의 범위에 따라서 s-lock과 x-lock의 차이가 있나요? #30

Open HYK97 opened 1 year ago

HYK97 commented 1 year ago

Lock의 범위에 따라서 s-lock과 x-lock의 차이가 있나요?

키워드

s-lock,x-lock, gap-lock


HYK97 commented 1 year ago

일반적인 s-lock과 x-lock 은 lock 획득 범위에 관련해서 확실하게 차이가 있습니다. 일반적인 s-lock 같은 경우는 read는 가능합니다. 일반적인 x-lock 같은 경우는 read, write 둘 다 불가능합니다. 하지만 이는 Record-Lock에서의 x-lock과 s-lock일 경우입니다. 만약 Lock이 Record-Lock 이 아니라 Gap-Lock으로 걸릴 경우에는 다르게 동작합니다. gap x-lock 같은 경우에는 실제 값이 gap 사이에 삽입되는 것을 막기 위한 기능이고 실제로 Lock을 획득하는 것에서는 제한을 두지 않기 때문에 gap s-lock과 똑같이 작동합니다. 따라서 동시에 같은 gap에 x-lock이 획득이 가능하고 때문에 Dead Lock 발생 위험이 커집니다.

일반적인 x-lock은 동시에 획득이 불가능하지만 gap x-lock은 가능합니다. image

참고자료

https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html