일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데코레이터
- exclusive lock
- 비관적락
- CHECK OPTION
- 낙관적락
- dfs
- 스토어드 프로시저
- 즉시로딩
- 일대다
- BOJ
- 유니크제약조건
- PS
- 힙
- fetch
- eager
- 다대다
- execute
- 이진탐색
- 다대일
- querydsl
- FetchType
- 연관관계
- 지연로딩
- JPQL
- 연결리스트
- 스프링 폼
- 백트래킹
- 동적sql
- shared lock
- SQL프로그래밍
- Today
- Total
흰 스타렉스에서 내가 내리지
공유락(Shared Lock)과 배타락(Exclusive Lock) 본문
공유락(Shared Lock) 과 배타락 (Exclusive Lock) 은 DBMS 에서 동시성 제어를 위해 사용되는 두 가지 주요 잠금 방식이다.
이 Lock 메커니즘은 다중 사용자 환경에서 데이터의 일관성과 무결성을 보장하기 위해 사용된다.
# 공유락 (Shared Lock)
여러 트랜잭션이 동시에 동일한 데이터를 읽을 수 있도록 허용하는 잠금이다.
다른 트랜잭션이 잠긴 객체를 읽고 다른 공유 락을 생성하는 것은 허용하지만, 쓰기나 배타 락을 생성할 수 없다.
여러 트랜잭션이 동일한 행에 공유락을 생성할 수 있다. 즉, 다른 트랜잭션이 읽고 있는 행을 읽을 수 있다.
공유 락이 걸려있는 행에 배타 락을 걸 수는 없다. 즉, 해당 공유 락이 해제될 때까지 쓰기는 불가능하다.
예시)
트랜잭션 A 가 데이터 X 에 공유락을 설정하면, 트랜잭션 B 도 데이터 X 에 공유락을 설정하고 읽을 수 있다.
그러나 트랜잭션 C 는 데이터 X 에 배타락을 설정할 수 없다.
# 배타락 (Exclusive Lock)
동일한 행에 다른 트랜잭션을 생성하는 것을 금지한다.
다른 트랜잭션에서 배타 락을 생성할 수 없기 때문에 쓰기가 불가능하다.
다른 트랜잭션에서 공유 락을 생성할 수 없다. 단, 락을 쓰지 않는 읽기는 가능하다.
예시)
트랜잭션 A 가 데이터 Y 에 배타락을 설정하면, 다른 트랜잭션은 데이터 Y 에 접근할 수 없다.
트랜잭션 A 가 배타락을 해제하기 전까지, 다른 트랜잭션은 데이터 Y 에 대한 접근 차단된다.
# 사용 예시
공유락은 데이터를 읽기만 하는 상황에서 사용된다. 예를 들어, 보고서 생성, 데이터 분석 등
배타락은 데이터를 수정하거나 삭제하는 상황에서 사용된다. 예를 들어, 트랜잭션 처리, 데이터 업데이트 등
# 장단점
공유락의 장점 : 다중 트랜잭션이 동시에 데이터를 읽을 수 있기 때문에 동시성 효율성이 높아진다.
공유락의 단점 : 데이터 수정이 제한되어 있어, 특정 트랜잭션이 데이터를 수정해야 할 때 대기 시간이 발생할 수 있다.
배타락의 장점 : 데이터 무결성과 일관성을 보장하며, 트랜잭션이 데이터를 안전하게 수정할 수 있다.
배타락의 단점 : 동시성이 제한되어 여러 트랜잭션이 동시에 데이터에 접근하는 경우 성능 저하가 발생할 수 있다.
'etc' 카테고리의 다른 글
SSH 의 원리와 접속 과정 (0) | 2024.07.18 |
---|---|
Slack Webhook URL 을 추가하는 방법 (0) | 2024.07.17 |
IOPS (0) | 2024.06.05 |
컴퓨터 구조와 Swap Memory (스왑 메모리) (0) | 2024.03.24 |
[네이버 블로그] 카테고리 만들기 (0) | 2024.03.14 |