ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Introduction to Transactions (edX StanfordOnline databases: Advanced Topics in SQL)
    컴퓨터/DB, SQL 2025. 6. 22. 18:42
    728x90
    반응형

    🔹 1. 트랜잭션이 중요한 이유 (두 가지 동기)

    1. 동시성 문제 (Concurrency)
      • 여러 클라이언트가 동시에 데이터베이스에 접근하면 충돌/불일치 가능
      • 예: 같은 데이터를 동시에 수정하면 일부 변경 사항이 덮어씌워질 수 있음
    2. 시스템 장애 복구 (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 등)에 대해 더 자세히 다룰 예정

     

    반응형

    댓글

Designed by Tistory.