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 (백은빈, 이성욱)
'MySQL' 카테고리의 다른 글
[MySQL] 8. 인덱스 (1) - Primary Key 클러스터링 인덱스 (0) | 2021.10.29 |
---|---|
[MySQL] 6. 트랜잭션 격리 수준 (with InnoDB) (0) | 2021.10.14 |
[MySQL] 5. InnoDB 스토리지 엔진이 제공하는 기능 (2) - 버퍼 풀 (0) | 2021.10.05 |
[MySQL] 4. InnoDB 스토리지 엔진이 제공하는 기능 (1) (0) | 2021.10.05 |
[MySQL] 3. MySQL의 메타데이터 관리 - mysql, information_schema DB (0) | 2021.10.05 |