Partial write 를 방지를 위한 이중화된 쓰기
- 일반적으로 InnoDB의 페이지 사이즈는 16KB임
- InnoDB에서 모든 페이지 형태로 관리되는 데이터에 적용됨
- 페이지의 16KB중 일부만 Disk에 기록된 상태에서 장애 발생시 복구 또는 최악의 경우 Page 손상 방지
-> 페이지 기록시 Double write buffer에 먼저 Page를 기록 후, 실제 대상 Page의 내용 변경
-> 만약, Double write buffer를 기록하던 중 장애 발생시에는 해당 페이지의 변경 무시
-> InnoDB 기동 시, Double write buffer의 내용은 실제 대상 Page의 내용과 비교되며,
이 과정에서 기록된 Page의 내용이 Partial write이면 Double write buffer를 이용해서 복구 - Sequential I/O로 처리되므로, Disk I/O가 2배가 되지는 않음
- 하지만, 이런 현상이 얼마나 발생하는지는 잘 예측 불가(현재까지는 본적이 없음)
- 가능성이 낮은 장애를 위해서 매번 2번씩 Disk write를 허용할 것인지는 중요한 선택임
- Master / Slave의 용도 또는 데이터의 중요도에 맞게 선택 적용하는 것도 좋은 정책임
- ZFS와 같이 File System 차원에서 원자(Atomic) 단위의 Write를 지원해주는 경우에는 필요 없음
- innodb_doublewrite=0 설정을 통해서 Double write 비활성화 가능함
댓글 없음:
댓글 쓰기