Database
-
DB - 블로킹(Blocking)과 데드 락(Deadlock)DB 2024. 11. 11. 22:27
블로킹(Blocking)정의:한 트랜잭션이 자원(테이블, 행 등)을 Lock 하고 있을 때, 다른 트랜잭션이 해당 자원에 접근하지 못하고 기다리는 현상특징:일시적인 현상으로, Lock 이 해제되면 자연스럽게 해결됨정상적인 데이터베이스 동작의 일부데이터 일관성을 보장하기 위한 매커니즘예시 코드)-- 블로킹 예시-- 트랜잭션 1BEGIN;UPDATE accounts SET balance = balance - 100 WHERE id = 1;-- 여기서 잠시 멈춤 (아직 COMMIT하지 않음)-- 트랜잭션 2 (동시 실행)BEGIN;UPDATE accounts SET balance = balance + 50 WHERE id = 1; -- 트랜잭션 1이 COMMIT할 때까지 대기 (블로킹) 데드 락(Deadlo..
-
공유 락(Shared Lock, S-Lock)과 배타 락(Exclusive Lock, X-Lock)DB 2024. 11. 10. 01:53
1. 공유 락(Shared Lock, S-Lock)읽기 작업(SELECT)을 위한 잠금여러 트랜잭션이 동시에 같은 데이터에 대해 공유락을 획득할 수 있음데이터를 읽을 수는 있지만 수정은 불가능다른 트랜잭션의 공유락과 호환되지만, 배타락과는 호환되지 않음사용 예시SELECT * FROM employees WHERE id = 1 LOCK IN SHARE MODE;2. 배타 락(Exclusive Lock, X-Lock)쓰기 작업(INSERT, UPDATE, DELETE)을 위한 잠금하나의 트랜잭션만 획득 가능데이터 읽기와 수정 모두 가능다른 트랜잭션의 공유락, 배타락 모두와 호환되지 않음사용 예시SELECT * FROM employees WHERE id = 1 FOR UPDATE;락 호환성 매트릭스 공유 락배..