ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION372 / 1500
데이터베이스난이도 중하5분 답변 목표 · 보강본

수백만 행을 한 번에 갱신하니 로그와 복제 지연이 커집니다. 배치로 나눌 때 어떤 정확성 조건이 달라지나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

배치 커밋은 잠금·로그·복구 부담을 줄일 수 있지만 전체 작업의 원자성을 여러 부분 완료 상태로 바꿉니다. 먼저 일부만 반영된 상태를 허용하는지와 재시작 기준을 정해야 합니다.

동작 원리와 전제

안정적인 기본키와 처리 기준 시점을 사용해 작은 범위를 갱신하고 마지막 완료 키를 기록할 수 있습니다. OFFSET으로 다음 배치를 고르면 삭제·조건 변화에 따라 행을 건너뛸 수 있습니다. 처리 조건이 바뀌는 행은 버전 검사나 재조사 큐로 다룹니다.

선택과 실패 처리

배치 크기는 고정 숫자를 외우지 않고 로그 생성률·잠금·replica lag·사용자 p99에 맞춰 조절합니다. 한 배치 결과와 checkpoint의 저장 순서가 어긋나면 중복 또는 누락이 생기므로 같은 transaction에 넣거나 재실행에 안전하게 합니다.

구체적인 사례와 검증

status='pending'인 행을 1,000개씩 처리하면서 OFFSET을 늘리면 이미 처리한 행이 조건에서 빠져 목록이 줄어들기 때문에 다음 행을 건너뛸 수 있습니다. 안정적인 키의 다음 범위와 완료 기준을 사용해야 합니다. 특정 행이 계속 실패할 때 전체 배치를 무한 반복할지 그 행만 격리할지도 정합니다. 부분 완료가 허용되지 않는 작업은 새 버전 테이블에 결과를 만들고 검증 후 읽기 포인터를 바꿀 수 있지만 이 경우 동시 쓰기와 역전환이 추가 문제입니다. 배치는 성능 옵션이면서 사용자에게 보이는 원자성·진행률·복구 계약을 바꾸는 선택이라는 점을 명확히 하겠습니다.

중간 종료·동시 삽입·키 변경·한 행 오류와 재개를 시험합니다. 전부 성공한 것처럼 표시하지 않고 처리·실패·보류 수를 공개합니다. 정말 전체 원자성이 필요하면 단순 배치 대신 별도 버전 데이터 생성 후 원자적인 포인터 전환 같은 설계가 필요한지 검토합니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 배치 커밋은 잠금·로그·복구 부담을 줄일 수 있지만 전체 작업의 원자성을 여러 부분 완료 상태로 바꿉니다.
  • 선택 조건: 배치 크기는 고정 숫자를 외우지 않고 로그 생성률·잠금·replica lag·사용자 p99에 맞춰 조절합니다.
  • 검증 기준: 중간 종료·동시 삽입·키 변경·한 행 오류와 재개를 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 큰 transaction을 나누어도 전체 원자성과 재시작 의미가 그대로라고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 구버전 쓰기가 남아 있는 상태에서 표현을 바꿀 때 호환·백필·전환을 어떻게 나누나요?
  • 성공 커밋의 내구 지점과 데이터 페이지 기록 시점은 왜 다르며 어떻게 복구하나요?
  • 첫 접근에 이전 작업을 시작할 때 동시 요청·checkpoint·늦은 워커 완료를 어떻게 처리하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기