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 (백은빈, 이성욱)

+ Recent posts