모든 빠른 쓰기는 다른 곳으로 작업을 옮긴다

Every fast write moves work somewhere else

모든 빠른 쓰기는 다른 곳으로 작업을 옮긴다

모든 스토리지 엔진은 쓰기 성공을 알리기 전에 어떤 작업을 완료해야 하는지 결정해야 한다. 메모리 복사 후 즉시 응답하는 방식은 빠르지만 머신 크래시 시 데이터가 손실될 수 있다. 로컬 SSD에 fdatasync()를 기다리는 방식은 프로세스나 커널 크래시에는 안전하지만 디바이스나 호스트 손실에는 취약하다. 네트워크 볼륨이나 여러 데이터베이스 서버에 복제하는 방식은 더 많은 장애를 견디지만 모든 쓰기에 네트워크 및 복사 시간이 추가된다. 객체 스토리지를 기반으로 한 최신 설계는 로컬 WAL과 LSM 트리 구조를 결합하여 성능과 내구성 사이의 트레이드오프를 보여준다. 이 글은 클라이언트 PUT이 메모리, 로컬 SSD, 원격 스토리지, 다수 서버 복제를 거치는 과정을 추적하며, 성공 후에도 데이터 손실 가능성이 있는 지점과 시스템이 허용할 수 있는 미완료 정리 작업의 양을 질문한다.

성공 후에도 여전히 잃을 수 있는 것이 무엇인지, 시스템이 얼마나 많은 미완료 정리 작업을 허용할 수 있는지 알고 싶다.

같은 날의 다른 소식

2026-08-09