- 데이터베이스 생성될 때, 두 개의 파일 생성
- 데이터파일(*.mdf) : 실제 데이터(테이블, 인덱스 등)와 그 행 데이터들이 저장
- 트랜잭션 로그 파일(*.ldf) : 데이터의 변경에 대한 내용을 기록해두는 공간
- 트랜잭션의 개념
- 데이터를 변경시키는 Insert, Update, Delete의 묶음. (Select는 해당 없음) → 모두 되거나, 모두 안됨
- 여러 개의 SQL을 트랜잭션으로 묶으려면 BEGIN TRAN … COMMIT TRANSACTION으로 묶어줘야 함.
- 트랜잭션을 명시하지 않으면, 디폴트값으로 매 SQL 마다 자동 커밋 모드로 동작
- 트랜잭션은 트랜잭션 로그 파일(*.ldf)에 저장됨.
- 트랜잭션 동작 원리
- SQL 문(묶음) 요청이 메모리에 접수되면, 트랜잭션 로그 파일에 트랜잭션 시작한다고 기록(BEGIN TRAN)
- SQL 문 한줄씩 동작한다
- 데이터 파일(*.mdf)을 확인하여, 변경할 내용을 캐시 메모리의 값을 변경한다.
- 트랜잭션 로그 파일에 변경사항을 기록하되, 실제 데이터 파일(*.mdf)에는 변화를 주지 않는다.
- 최종적으로 COMMIT TRAN 문장이 전달되면, 로그 파일에 COMMIT TRAN이 명시된다.
- 메모리에 로딩된 변경 데이터를 데이터 파일(*.mdf)에 적용한다.
- 데이터 파일(.mdf)에 적용이 되면, 로그 파일(.ldf)에 체크포인트 표시를 하면서 끝난다.
- 체크포인트까지 끝나지 않은 상태에서 시스템이 종료되면 로그 파일에나 데이터 파일 모두에 적용이 안되도록 하여 데이터의 완전성을 보장한다.
'개발공부 > SQL & DB' 카테고리의 다른 글
[MSSQL] 테이블 컬럼 추가/수정/삭제 (1) | 2023.04.20 |
---|---|
[MySQL] SP(Stored Procedure) 생성 및 호출 방법 (0) | 2022.12.28 |
데이터베이스 개념 정리 (0) | 2022.11.22 |
[MySQL] 데이터베이스를 다른 서버로 옮기기 (1) | 2022.10.04 |
[MySQL] COUNT 사용 시, 띄어쓰기하지 마세요! (0) | 2022.09.20 |