우리가 게임을 할 때면 상대방과 거래를 하는 경우가 생긴다. 내가 100골드를 내고 상대방이 갖고 있는 방패를 구매하려고 한다. 나는 상대에게 100골드를 줬고, 상대도 나에게 방패를 줬다. 이때 게임에 오류가 발생해서 상대의 방패가 증발했다면, 매우 곤란한 상황이 펼쳐진다. 나는 돈을 냈는데 얻은 게 없고 상대도 방패를 줬으니 잘못이 없다.
이런 곤란한 상황을 막기 위해 있는 것이 바로 Transaction(트랜잭션)이다. 트랜잭션은 데이터베이스 혹은 비슷한 시스템에서 업무를 수행하는 작업단위를 말한다. 트랜잭션에는 4가지 특징이 있다.
1️⃣ 원자성(Atomicity)
게임서버에서도 중요하게 나왔던 개념이다. 한 번에 실행되어야 하는 코드는 중간에 멈추거나 삭제되지 않고 처음부터 끝까지 한 번에 실행된다.
2️⃣ 일관성(Consistency)
작업의 결과는 항상 일관적으로 같아야 한다.
3️⃣ 고립성(Isolation)
트랜잭션은 단독적으로 실행되어야 한다. 다른 트랜잭션을 함께 실행하더라도 결과는 같아야 한다.
4️⃣ 지속성(Durability)
트랜잭션이 끝나면 결과는 영구적으로 보존된다.
트랜잭션에는 COMMIT과 ROLLBACK이 나온다.
✅COMMIT
모든 작업은 순간순간 DB에 영구저장되는 것이 아니라 임시적인 공간에서 이루어진다. 모든 작업이 오류 없이 완벽하게 실행되었다면 그때 COMMIT을 통해 DB에 작업을 올린다. COMMIT은 트랜잭션의 마지막 단계다.
✅ROLLBACK
트랜잭션 작업 도중 오류가 발생했다면 작업은 ROLLBACK되어 이전에 완료됐던 마지막 COMMIT으로 데이터를 복구한다.
'공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 정렬(Sort/Sorting) 줄이기 (0) | 2022.07.08 |
---|---|
[데이터베이스] JOIN(조인) : Nested Loop, Merge, Hash (0) | 2022.07.08 |
[데이터베이스] 복합인덱스란? (0) | 2022.07.07 |
[데이터베이스] Clustered Index와 Non-Clustered Index (0) | 2022.07.02 |
[데이터베이스] Microsoft SQL 쓰는 순서와 실행 순서 (0) | 2022.06.27 |