비교 핵심
같은 변경도 로그가 바라보는 단위는 다릅니다
차이는
무엇을 남기느냐
입니다. 저장 위치와 값을 바로 적어 두면 복구는 단순해지고, 수행한 연산의 의미를 남기면 로그는 더 추상적이지만 해석 단계가 필요해집니다.
공통 상황
UPDATE employee SET salary = 200 WHERE id = 1 결과: salary 100 → 200
두 방식 모두
같은 트랜잭션 변경
을 기록하지만, 복구 시 읽는 기준이 달라집니다.
저장 위치까지 고정
물리적 로깅
페이지나 슬롯처럼 실제 저장 위치와 변경 값을 그대로 남깁니다.
연산 의미를 보존
논리적 로깅
어떤 조건에 어떤 연산을 수행했는지 작업의 의미를 기록합니다.
로그 예시
page 42, slot 3 salary: 100 → 200
UPDATE employee SET salary = 200 WHERE id = 1
복구 시 처리
값을 바로 되돌리거나 다시 씁니다
어디를 어떻게 바꿀지 명확
해서 Redo/Undo가 직접적입니다.
연산을 다시 해석해야 합니다
조건 검색과 접근 경로를 따라가며
의미를 재실행
해야 할 수 있습니다.
운영상 의미
복구는 단순하지만 로그가 커지기 쉽습니다
저장 구조에 밀착돼 있어
정확하고 빠른 복구
에 유리합니다.
로그는 추상적이지만 복구 로직이 더 복잡합니다
구조 변화에 덜 묶일 수 있지만
추가 해석 비용
이 따릅니다.
실무 연결
실제 DBMS는 둘 중 하나만 고집하지 않습니다.
페이지 단위의 안정적인 복구 가능성
은 유지하면서, 필요한 곳에서는
레코드 변경의 의미
도 함께 다뤄 효율과 일관성을 맞춥니다.