-
Introduction to Transactions (edX StanfordOnline databases: Advanced Topics in SQL)컴퓨터/DB, SQL 2025. 6. 22. 18:42728x90반응형
🔹 1. 트랜잭션이 중요한 이유 (두 가지 동기)
- 동시성 문제 (Concurrency)
- 여러 클라이언트가 동시에 데이터베이스에 접근하면 충돌/불일치 가능
- 예: 같은 데이터를 동시에 수정하면 일부 변경 사항이 덮어씌워질 수 있음
- 시스템 장애 복구 (System Failures)
- 예: 작업 도중 시스템 다운 → 데이터 중복/누락 등 불일치 발생
* different levels where inconsistency can occur
(1) signle attribute
multiple client가 같은 어트리뷰트에 대해 작업하면 문제가 생길 수 있다.
데이터를 읽고(get), 수정하고(modify), 다시 저장하는(put) 과정을 서로 엇갈리게(interleave) 수행할 수 있다면,
3가지 final value가 가능하다.
순번 실행 방식 결과값
순번 실행 방식 결과값 1 순차 실행 17,500 2 interleave (S2 put 마지막) 16,500 3 interleave (S1 put 마지막) 16,000 읽기-수정-쓰기 단계가 엇갈려(interleave) 실행되면,
데이터 무결성이 깨지고 결과가 달라질 수 있기 때문에 트랜잭션과 동시성 제어가 필수다.
(2) tuple-level inconsistency
한 튜플&다른 컬럼에 대한 업데이트: 모든 변경 시도가 반영될 수도 있고, 한 가지만 반영될 수도 있다.
In this case, we would probably expect both changes to be persistent in the database.
(3) table-level inconsistency
(4) Multi-statement inconsistency
inconsistency 문제를 일으키지 않고 병렬로 처리될 수 있다면 그게 성능상 좋음
🔹 3. 시스템 장애 예시
- 데이터 로딩 중 시스템 다운 → 일부만 저장됨
- apply → archive 이동 도중 장애 발생 → 이동 여부 불분명
- 디스크에 기록 전 메모리 수정 중 장애 → 변경 사항 유실
✅ 필요한 것: 특정 작업 묶음을 전부 실행하거나 전혀 실행하지 않도록 보장하는 메커니즘
problems with concurrentcy,
problems with system failures
=> transaction을 활용하여 해결할 수 있다
🔹 4. 트랜잭션(Transaction)의 정의
하나 이상의 데이터베이스 연산을 원자적 단위로 묶은 것
- 트랜잭션은 독립적으로 실행되는 것처럼 보이며,
시스템 오류 발생 시 전부 반영되거나 아무것도 반영되지 않음
🔹 5. SQL에서의 트랜잭션 사용법
- COMMIT: 현재 트랜잭션 종료 및 저장
- ROLLBACK (언급은 안 되었지만 보통 함께 사용): 트랜잭션 취소
- Autocommit 모드: 각 SQL 문장을 하나의 트랜잭션으로 간주
✅ 시간 흐름 예시 (Client 별)
Client 1 ──────┬────────────┬────────────┬────────────┐ │ Commit │ Commit │ Commit │ │ (T1 끝) │ (T2 끝) │ (T3 끝) │ Client 2 ──────┬────────────┬────────────┐ │ Commit │ Commit │ │ (T1 끝) │ (T2 끝) │
🔹 6. 결론
- 트랜잭션은 동시성 제어와 장애 복구를 동시에 해결하는 핵심 메커니즘
- 여러 사용자, 여러 명령, 시스템 장애가 있어도 일관성 유지 가능
- 다음 강의에서는 트랜잭션이 보장하는 속성 (ACID 등)에 대해 더 자세히 다룰 예정
반응형'컴퓨터 > DB, SQL' 카테고리의 다른 글
- 동시성 문제 (Concurrency)