이 페이지에서는 Spanner의 쓰기 처리량을 최적화하기 위해 최대 커밋(쓰기) 지연 시간을 구성하는 방법을 설명합니다.
개요
데이터 일관성이 보장되도록 Spanner는 쓰기 요청을 데이터베이스의 모든 응답 복제본에 전송합니다. 이 복제 프로세스에는 계산 오버헤드가 있을 수 있습니다. 자세한 내용은 복제를 참조하세요.
처리량 최적화 쓰기를 사용하면 쓰기 그룹을 함께 실행하여 이러한 계산 비용을 분할 상각할 수 있습니다. 이를 위해 Spanner는 약간의 지연 시간을 발생시키고 동일한 응답 참여자에게 전송해야 하는 쓰기 그룹을 수집합니다. 이 방법으로 쓰기를 실행하면 지연 시간이 약간 늘어나지만 처리량이 크게 향상될 수 있습니다.
기본 동작
커밋 지연 시간을 설정하지 않은 경우 쓰기 비용을 분할 상각할 것으로 예상되는 경우 Spanner가 약간의 지연을 설정할 수 있습니다.
일반 사용 사례
애플리케이션 니즈에 따라 쓰기 요청 지연 시간을 수동으로 설정할 수 있습니다. 최대 커밋 지연 시간을 0밀리초로 설정하여 지연 시간에 상당히 민감한 애플리케이션의 커밋 지연을 중지할 수도 있습니다.
지연 시간에 관대한 애플리케이션이 있고 처리량을 최적화하려는 경우 커밋 지연 시간을 더 길게 설정하면 처리량이 크게 향상되지만 쓰기마다 지연 시간이 더 길어집니다. 예를 들어 많은 양의 데이터를 일괄 로드할 때 Spanner가 개별 데이터를 얼마나 빨리 쓰는지 신경 쓰지 않는 경우 커밋 지연 시간을 이를테면 약 100ms처럼 더 긴 값으로 설정할 수 있습니다. 우선 100ms로 시작하여 지연 시간과 처리량 절충이 요구를 충족할 때까지 증가 및 축소하는 것을 권장합니다. 대부분의 애플리케이션에서는 20~100밀리초 사이의 값이 가장 좋습니다.
지연 시간에 민감한 애플리케이션이 있는 경우 Spanner도 기본적으로 지연 시간에 민감합니다. 급격한 변동이 있는 워크로드의 경우 Spanner에서 약간의 지연을 설정할 수 있습니다. 값을 0밀리초로 설정하여 실험하면 처리량 증가 대신 지연 시간 단축이 애플리케이션에 적합한지 확인할 수 있습니다.
혼합 커밋 지연 시간 설정
쓰기 하위 집합에 서로 다른 최대 커밋 지연 시간을 구성할 수 있습니다. 이렇게 하면 Spanner는 쓰기 집합에 구성된 가장 짧은 지연 시간을 사용합니다. 하지만 대부분의 사용 사례에서는 단일 값을 선택하는 것이 좋습니다. 이렇게 하면 동작이 더 예측 가능해 집니다.
제한사항
커밋 지연 시간은 0~500ms 사이로 설정할 수 있습니다. 커밋 지연 시간을 500ms보다 높게 설정하면 오류가 발생합니다.
커밋 요청에 최대 커밋 지연 설정
최대 커밋 지연 파라미터는 CommitRequest
메서드의 일부입니다. RPC API, REST API 또는 Cloud Spanner 클라이언트 라이브러리를 사용하여 이 메서드에 액세스할 수 있습니다.
Go
Node.js
Python
Ruby
쓰기 요청 지연 시간 모니터링
Google Cloud 콘솔을 사용하여 Spanner CPU 사용률과 지연 시간을 모니터링할 수 있습니다. 쓰기 요청에 더 긴 지연 시간을 설정하면 지연 시간이 증가하는 반면 CPU 사용률이 감소할 수 있습니다. Spanner 요청 지연 시간은 Spanner API 요청 지연 시간 캡처 및 시각화를 참조하세요.