트랜잭션 2

교착상태

🔎 교착상태복수의 트랜잭션을 사용하다 보면 교착상태가 일어날 수 있다. 교착상태란 두 개 이상의 트랜잭션이 특정 자원(테이블 또는 행)의 잠금을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태가 되는데, 이를 교착상태라고 한다.  트랜잭션 1이 테이블 B의 첫번째 행의 잠금을 얻고 트랜잭션 2도 테이블 A의 첫번째 행의 잠금을 얻었다고 했을 때,트랜잭션을 COMMIT하지 않은채 서로의 첫번째 행에 대한 잠금을 요청하면 Deadlock이 발생한다. 교착 상태의 빈도를 낮추는 방법트랜잭션을 자주 커밋한다.정해진 순서로 테이블에 접근한다.위에서는 트랜잭션 1이 테이블 B → A의 순으로 접근했고, 트랜잭션 2는 테이블 A → B 순으로 접근했다. 트랜잭션들이..

CS 2024.11.16

SQL - DB 트랜잭션(Transaction)

🔎 트랜잭션이란?데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다 = SQL 질의어를 통해 DB에 접근하는것 (SELECT, INSERT, DELETE, UPDATE) 쉽게 말해 한꺼번에 수행되어야 할 연산을 모아놓은 것으로, 연산들을 모두 처리하지 못한 경우에는 원 상태로 복구한다.작업의 일부만 적용되는 현상이 발생하지 않는다!→ 작업의 완전성을 보장해준다. 사용자 A가 사용자 B에게 만원을 송금한다.1. 사용자 A의 계좌에서 만원을 차감한다.2. 사용자 B의 계좌에서 만원을 추가한다.출금 UPDATE문 + 입금 UPDATE문이를 통틀어 하나의 트랜잭션이라고 한다.위 두 쿼리문 모두 성공적으로 완료되어야만 하나의 작업, 트랜잭션이 완료되는 것이다. = commit작업 단위에 ..

CS 2024.11.13