티스토리 뷰
728x90
반응형
동시성 제어를 위해 특정 Row에 Lock을 거는 Row-Level Exclusive Lock (X Lock)
- 특정 Row를 변경하기 전 해당 Row를 SELECT 했을 때 다른 Transaction 에서 변경 가능한 동시성 (Phantom Reads) 해결을 위해 사용
- UPDATE, DELETE 구문처럼 SELECT ~ FOR UPDATE 실행 시 COMMIT/ROLLBACK 전까지 다른 Transaction 에서 SELECT 불가
- Table Lock 이 아니기 때문에 SELECT COUNT(*) FROM TABLE 같은 구문에 사용 불가
SELECT COUNT
FROM TABLE
WHERE ID = #{ID}
FOR UPDATE; -- Lock 이 풀릴 때까지 무한정 대기
FOR UPDATE NOWAIT; -- Lock 이 걸려있으면 대기하지않고 바로 에러 발생
FOR UPDATE WAIT 5; -- Lock 이 걸려있으면 5초 대기 후 에러 발생
728x90
반응형
'DB' 카테고리의 다른 글
[MySQL] JSON 조회 JSON_EXTRACT (1) | 2023.12.06 |
---|---|
Pessimistic Lock vs Optimistic Lock (0) | 2022.09.05 |
Oracle ORA-01401 SELECT 문에서 발생 (0) | 2021.10.14 |
ORACLE NCHAR vs NVARCHAR2 (0) | 2021.10.07 |
Mybatis 글자수 4000bytes 이상 ora-01461 에러 (0) | 2021.02.04 |
반응형
300x250