MySQL
[MySQL] 7. 잠금 (Lock)
Yerim Kim
2021. 10. 15. 15:55
1. 잠금(Lock)의 종류
1.1 Shared Lock ( = Read Lock )
보통 데이터를 읽을 때 사용한다. (InnoDB 에서는 잠금 없이 읽으니까 의미 없는듯?)
데이터에 락을 걸었지만 다른 세션에서 읽을 수 있다.
Shared Lock이 걸린 레코드에 Shared Lock 을 추가로 걸 수 있다.
Shared Lock이 걸린 레코드에 Exclusive Lock 을 추가로 걸 수 없다.
1.2 Exclusive Lock ( = Write Lock )
보통 데이터를 변경할 때 사용한다.
해당 락이 해제되기 전에 어떠한 락도 걸 수 없다.
즉 읽기/쓰기가 불가능하다.
(InnoDB 에서는 락이 걸린 데이터에 대해서
언두 로그를 통해 읽기가 이루어짐)
MySQL에서 Read 는 undo 로그를 통해 Lock과 관계없이 동작하므로
Write Lock 만 생각하면 된다.
2. MySQL의 Lock
2.1 MySQL 엔진의 잠금
글로벌 락
테이블 락
네임드 락
메타데이터 락
2.2 InnoDB 스토리지 엔진의 잠금
레코드 락
갭 락
넥스트 키 락
출처
1
[DB] Lock 이란?
https://chrisjune-13837.medium.com/db-lock-락이란-무엇인가-d908296d0279
2
Real MySQL 8.0 (백은빈, 이성욱)