멀티 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장할 수 있는 잠금 장치. 트랜잭션 격리 수준과 DBMS에 따라 다양한 Lock 정책이 존재하지만 크게 2가지로 나눌 수 있음.
일반적으로 공유 락은 읽기 락이고, 베타 락은 쓰기 락이다. 따라서 베타 락에서 읽기는 가능하고, 쓰기만 불가능하다. 이렇게 널리 퍼져있지만 이는 틀린 말입니다(트랜잭션 격리 수준에 따라 베타 락에서도 읽기가 불가능 할 수 있음).
공유 락과 베타 락의 핵심은 읽기 쓰기가 아니라 락 사이 호환 여부입니다.
공유 락은 같은 공유 락을 허용하기 때문에 읽기가 가능하고, 쓰기에 필요한 베타 락을 불허하기 때문에 쓰기가 불가능 한 것이며, 베타 락은 락을 사용하는 읽기(Locking Reads)인 경우에는 불가능하며 락을 사용하지 않는 읽기(Consistent Nonlocking Reads)인 경우에는 가능합니다.
출처
- https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html#innodb-shared-exclusive-locks
- https://www.geeksforgeeks.org/difference-between-shared-lock-and-exclusive-lock/?ref=gcse
- https://velog.io/@soongjamm/Select-%EC%BF%BC%EB%A6%AC%EB%8A%94-S%EB%9D%BD%EC%9D%B4-%EC%95%84%EB%8B%88%EB%8B%A4.-X%EB%9D%BD%EA%B3%BC-S%EB%9D%BD%EC%9D%98-%EC%B0%A8%EC%9D%B4
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=seuis398&logNo=220434402234