Day 51 · 3/5
🌿 중급 DB

데이터베이스 읽기/쓰기 분리란?

쉽게 이해하기

은행 창구를 생각해보세요. 입금/출금은 본점 창구에서만 하고, 잔액 조회는 지점 여러 곳에서 할 수 있게 하면 본점 창구가 덜 밀리겠죠. 조회하는 사람이 훨씬 많으니 지점을 여러 개 두면 전체적으로 효율적이에요.

핵심 정리

읽기 작업과 쓰기 작업을 서로 다른 데이터베이스 서버로 분리해서 성능을 높이는 방법이에요.

자세히 알아보기

읽기/쓰기 분리(Read/Write Split)는 데이터베이스를 Master(쓰기용)와 Replica(읽기용)로 나누는 구조예요. 대부분의 서비스는 조회(SELECT)가 수정(INSERT/UPDATE/DELETE)보다 훨씬 많기 때문에 이렇게 분리하면 효율적입니다. 실무에서는 Master 1대에 Replica 여러 대를 두는 구조를 많이 써요. 예를 들어 쇼핑몰에서 상품 정보를 보는 사람은 많지만, 실제 주문하는 사람은 상대적으로 적죠. 조회는 Replica 서버들이 나눠서 처리하고, 주문 같은 쓰기 작업만 Master가 담당하면 Master의 부하가 줄어듭니다. 구현 방식은 이렇게 동작해요. 1) 애플리케이션에서 쓰기 쿼리는 Master로 보내요. 2) Master의 데이터는 실시간으로 Replica들에게 복제돼요(레플리케이션). 3) 읽기 쿼리는 여러 Replica 중 하나로 분산해서 보냅니다. 로드밸런서가 자동으로 어느 Replica로 보낼지 결정해줘요. 주의할 점은 복제 지연(Replication Lag)이에요. Master에 쓴 데이터가 Replica에 반영되기까지 짧은 시간(보통 밀리초~수초)이 걸려요. 그래서 방금 등록한 글이 목록에 안 보이는 현상이 생길 수 있죠. 이럴 땐 쓰기 직후의 읽기만 Master에서 하거나, 사용자에게 '등록 중입니다' 메시지를 보여주는 방식으로 해결해요.