DB 트랜잭션 (Transaction)
트랜잭션 : 하나의 작업 묶음, 쪼갤 수 없는 작업의 단위
트랙잭션은 COMMIT 또는 ROLLBACK 까지 진행되어야 비로소 진행 된 것이다 그 전까지 다른 트랜잭션에 접근 불가.
특징 : ACID
Atomicity 원자성 : All or Nothing 될거면 몽땅 되든지 안될거면 몽땅 안되던지
Atomicity Ex)
트랜잭션시작
쿼리1 성공
쿼리2 성공
쿼리3 실패
ROLLBACK
트랜잭션 시작
쿼리1 성공
쿼리2 성공
쿼리3 성공
COMMIT
Consistency 일관성 : 트랜잭션을 수행하고 나면 하나의 일관된 상태에서 다른 일관된 상태로 바뀌어야 한다
Consistency Ex)
돈 이라는 도메인의 유효범위가 0 이상의 정수 일 때
트랜잭션 시작 -> 현재 돈 300원 -> 500원짜리 아이템 구입 -> 현재 돈 -200 : 일관성을 해침
트랜잭션 시작 -> 현재 돈 300원 -> 500원짜리 아이템 구입 -> 300원짜리 아이템 판매 -> 현재 돈 +100 : 일관성 유지
Isolation 고립성 : 한 트랜잭션이 실행되는 동안 외부에서는 트랜잭션에 접근할 수 없음
병렬로 수행되더라도 결과는 마치 직렬로 수행된 것 과 비슷해야한다
*TIL 트랜잭션 아이솔레이션 레벨 4단계 : 학부 지식은 아니지만 게임 개발을 원한다면 공부해야하는 필수 지식
Durability 지속성 : 완료(Commit)된 트랜잭션은 영구적으로 보존되어야 한다
ex)
트랜잭션 시작 -> 작업 1,2 성공 -> Commit 누르는 것과 동시에 프로그램 다운 -> 운영체제가 도움을 주어 어떻게든 commit 시킴