6편에서 트랜잭션 격리 수준이 동시성과 성능에 어떤 비용을 요구하는지 살펴봤다.이제 더 근본적인 질문으로 내려가 보자.“트랜잭션을 커밋했다고 했을 때, 정말로 무엇이 보장될까?”장애가 발생했을 때, MySQL(InnoDB)이 보장하는 것은 생각보다 명확하고, 동시에 제한적이다.커밋은 ‘데이터 파일에 쓰였다’는 의미가 아니다많은 개발자가 커밋을 이렇게 이해한다.“COMMIT = 데이터가 디스크에 안전하게 저장됨”InnoDB에서 이 이해는 정확하지 않다.커밋의 의미는 다음 한 문장으로 요약된다.“이 변경 사항은 복구 가능하다.”즉, 커밋 시점에 실제 데이터 페이지가 디스크에 기록되었는지는 중요하지 않다.Redo Log가 하는 일InnoDB는 데이터 페이지를 즉시 디스크에 쓰지 않는다.대신, 변경 내용을 Re..