LinkedIn

Database Lock과 Blocking

2020. 11. 10. 20:53 | 자바 개발자되기

Shared Lock, Exclusive Lock

데이터베이스 Lock에는 크게 두 가지가 있다.

1. Shared Lock

보통 읽기 작업을 진행할 때 사용되는 Lock으로 다른 사용자가 조회는 가능하지만 변경은 불가하다.

2. Exclusive Lock

보통 변경 작업을 진행 할 때 사용되며 해당 Lock이 걸리면 Shared Lock 뿐만 아니라 추가적인 Exclusive Lock도 불가하다.

Blocking

블록킹이란 Lock들간의 경합으로 더 이상 처리를 진행할 수 없는 상태를 말한다.

블록킹을 예방 할 수 있는 다양한 방법이 있지만 그중 실제 업무에서 활용했던 부분은 lock_timeout을 설정하는 것 이다.

set lock_timeout 1000

위 와 같이 lock_timeout을 설정하면 ms 단위로 해당 Lock의 최대 시간을 지정할 수 있다.