728x90
목차
- SELECT FOR UPDATE
- SELECT FOR UPDATE 의 옵션
1. SELECT FOR UPDATE
select for update는 MySQL에서 사용되는 특별한 select 문의 한 종류이다.
특정 레코드 또는 행을 select하면서 해당 레코드를 다른 트랜잭션에서 변경하지 못하도록 락을 거는 것이다.
즉 "데이터 수정하려고 SELECT 했어. 건드리지마 !" 와 같은 뜻이다.
사용예시
SELECT column1, column2, ...
FROM table_name
WHERE conditions
ORDER BY column_name
LIMIT row_count
FOR UPDATE;
마지막 절에 FOR UPDATE
를 추가하면서 SELECT된 레코드들은 다른 트랜잭션에서 변경되지 않도록 락이 걸리게 된다.
따라서, 해당 트랜잭션이 커밋되거나 롤백될 때까찌 다른 트랜잭션에서는 해당 레코드들에 대한 수정이 불가능하게 된다.
2. SELECT FOR UPDATE 의 옵션
- SELECT ~ FOR UPDATE: 누군가가 LOCK 중이면 무한정 기다려야 한다.
- SELECT ~ FOR UPDATE NOWAIT: 누군가가 LOCK 중이면 exception 처리한다.
- SELECT ~ FOR UPDATE WAIT 5(초): 누군가가 LOCK 중이면 입력한 시간(초단위)만큼 기다렸다가 exception 처리한다.
참고
반응형
'Database' 카테고리의 다른 글
Redis란? (1) | 2023.11.14 |
---|---|
MySQL Index에 대해 알아보자 (0) | 2023.11.07 |
낙관적인 락 vs 비관적인 락 (0) | 2023.07.07 |
Mybatis #과 $차이 (0) | 2023.06.30 |
JOIN의 종류(INNER, OUTER, CROSS, SELF JOIN) (0) | 2023.06.23 |