본문 바로가기
SQL SERVER 도서 완독 후 내용 정리/SQL Server 디비로 누리는 특별한 세상 나의 첫 번째 데이터베이스

SQL Server 데이터 변경시 수행 과정

by 예비건물주 2023. 6. 8.

※ 이 글은 'SQL Server 디비로 누리는 특별한 세상 나의 첫 번째 데이터베이스 개발하기 (개발편)' 책을 1회 완독 후 다시 훑어 보면서 몰랐었던 부분, 계속 잊혀지는 부분(또 잊혀질테니 다시보기 위해), 알고 있었지만 정리하면 좋을거 같은 내용 등 을 정리한 글 입니다.
제가 향후에 다시보기 위해 정리한 내용이라서 설명이 부족할 수 있으니 자세한 내용은 해당 도서를 참고 부탁드리겠습니다.
또, 제가 이해를 잘못해서 정리를 잘못한 부분이 있다면 말씀부탁드립니다. (확인 후 수정하겠습니다)

 

P65 내용 [트랜잭션 로그(Transaction Log) 파일 내용 중]

 

SQL Server는 데이터 변경시 다음과 같은 과정으로 변경 작업을 수행한다.

 

클라이언트 응용프로그램이 데이터 변경을 요청했을 경우,

 

1. SQL Server는 변경할 데이터 페이지를 메모리(Buffer Cache라 함)로 가져온 후 메모리의 데이터를 변경한다. 이미 메모리에 있다면 이것을 변경한다.

2. 메모리의 데이터를 변경한 내용을 로그 파일에 기록한다. 데이터 파일에 기록하기 전에 로그부터 기록한다 하여 로그 미리 쓰기(Write-Ahead Log)라 한다.

3. 체크포인트(Checkpoint) 프로세스가 반복적으로 수행되면서 데이터 파일과 메모리 내용이 다른 데이터 페이지(Dirty 페이지라 함)를 데이터 파일에 반영한다.

4. 만일 시스템이 재시작되면, 로그 파일에 기록된 내용을 근거로하여, 완료된 트랜잭션은 롤 포워드(Roll Forward)하고, 완료되지 않은 트랜잭션은 롤 백(Roll Back)한다. 이러한 과정을 '자동 복구 프로세스'라 한다.

 

※ 참고사항

SQL Transaction 관련해서 아래 사이트에 잘 나와 있으니 참고하면 좋을것 같습니다.

https://www.sqlshack.com/sql-server-transaction-overview/