본문 바로가기
개발자 도전기

[SQL Server] 트랜잭션 개념 정리

by 개발하는아빠 2022. 11. 22.
  1. 데이터베이스 생성될 때, 두 개의 파일 생성
    1. 데이터파일(*.mdf) : 실제 데이터(테이블, 인덱스 등)와 그 행 데이터들이 저장
    2. 트랜잭션 로그 파일(*.ldf) : 데이터의 변경에 대한 내용을 기록해두는 공간
  2. 트랜잭션의 개념
    1. 데이터를 변경시키는 Insert, Update, Delete의 묶음. (Select는 해당 없음) → 모두 되거나, 모두 안됨
    2. 여러 개의 SQL을 트랜잭션으로 묶으려면 BEGIN TRAN … COMMIT TRANSACTION으로 묶어줘야 함.
    3. 트랜잭션을 명시하지 않으면, 디폴트값으로 매 SQL 마다 자동 커밋 모드로 동작
    4. 트랜잭션은 트랜잭션 로그 파일(*.ldf)에 저장됨.
  3. 트랜잭션 동작 원리
    1. SQL 문(묶음) 요청이 메모리에 접수되면, 트랜잭션 로그 파일에 트랜잭션 시작한다고 기록(BEGIN TRAN)
    2. SQL 문 한줄씩 동작한다
    3. 데이터 파일(*.mdf)을 확인하여, 변경할 내용을 캐시 메모리의 값을 변경한다.
    4. 트랜잭션 로그 파일에 변경사항을 기록하되, 실제 데이터 파일(*.mdf)에는 변화를 주지 않는다.
    5. 최종적으로 COMMIT TRAN 문장이 전달되면, 로그 파일에 COMMIT TRAN이 명시된다.
    6. 메모리에 로딩된 변경 데이터를 데이터 파일(*.mdf)에 적용한다.
    7. 데이터 파일(.mdf)에 적용이 되면, 로그 파일(.ldf)에 체크포인트 표시를 하면서 끝난다.
    8. 체크포인트까지 끝나지 않은 상태에서 시스템이 종료되면 로그 파일에나 데이터 파일 모두에 적용이 안되도록 하여 데이터의 완전성을 보장한다.