SQL LOCK

SQL LOCK

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2020 Jan 13 3:2
Editor
Edited
Edited
2022 Jul 11 16:3
Refs
Refs

Table-Level Locking


read lock

LOCK TABLES table READ; UNLOCK TABLES;
 
 

write lock

LOCK TABLES table WRITE; UNLOCK TABLES;
 
 

Row-Level Locking


 
주의 해야할것은 MySQL이 조회된 행을 기억하는 방법이 인덱스 범위를 기억하는 것이므로 조건 필드에 인덱스가 없으면 전체 테이블에 lock 이 걸립니다.
START TRANSACTION; SELECT * FROM tb_stock WHERE id=1 FOR UPDATE; COMMIT;
 
공유모드로 잠그면 다른 세션에서 읽기는 가능하고 수정, 삭제는 못하도록 할 수 있습니다
 

Optimistic Lock


 
SELECT quantity, opt_flag FROM tb_stock WHERE id = 1; UPDATE tb_stock SET quantity=quantity-1 WHERE quantity-1 >= 0 AND id = 1;
 
 
 
 
 

Recommendations