이 페이지에서는 최적 조건에서 Spanner가 제공할 수 있는 대략적인 성능, 성능에 영향을 줄 수 있는 요소, Spanner 성능 문제 테스트 및 문제 해결을 위한 팁에 대해 설명합니다.
이 페이지의 정보는 GoogleSQL 및 PostgreSQL 데이터베이스 모두에 적용됩니다.
성능 및 스토리지 개선사항
모든 Spanner 리전 및 멀티 리전 인스턴스 구성에 성능 및 스토리지 개선사항이 출시됩니다. 이러한 성능 개선사항으로 인해 리전 및 멀티 리전 인스턴스 구성 모두에서 Spanner 노드의 처리량과 지연 시간이 향상됩니다. 일부 인스턴스 구성에서는 증가한 처리량 및 스토리지를 사용할 수 있습니다. 애플리케이션을 변경하거나 Spanner 인스턴스에서 직접 아무것도 구성하지 않아도 추가 비용 없이 제공되는 이러한 개선사항의 이점을 누릴 수 있습니다.
향상된 성능 처리량
다음 표는 성능이 개선된 인스턴스 구성의 대략적인 처리량(초당 쿼리 수)을 제공합니다. 인스턴스에 포함된 컴퓨팅 용량의 각 노드(처리 단위 1,000개)에 최대 50% 더 많은 처리량이 제공됩니다.
인스턴스 구성 유형 | 최대 읽기(리전별 QPS) | 최대 쓰기(QPS 합계) | 처리량 최적화 쓰기를 사용한 최대 쓰기(QPS 합계) | ||
---|---|---|---|---|---|
리전 | 22,500 | 또는 | 3,500 | 22,500 | |
멀티 리전 | 15,000 | 또는 | 2,700 | 15,000 |
향상된 성능 처리량은 다음을 제외한 모든 Spanner 인스턴스 구성에서 사용할 수 있습니다.
리전 인스턴스 구성:
us-west4
멀티 리전 인스턴스 구성:
nam10
,nam-eur-asia1
이러한 인스턴스 구성의 성능 처리량에 대한 자세한 내용은 일반 워크로드 성능을 참조하세요.
읽기는 읽기-쓰기 또는 읽기 전용 리전에서 제공될 수 있기 때문에 읽기 안내는 리전별로 제공되지만 쓰기 안내는 전체 구성에 해당합니다. 읽기 안내에서는 1KB의 단일 행을 읽고 있다고 가정합니다. 쓰기 안내에서는 행당 1KB 데이터로 단일 행을 쓴다고 가정합니다.
처리량 최적화 쓰기를 사용하는 최대 쓰기 성능은 100ms의 일괄 처리 지연을 사용하여 얻을 수 있습니다.
일반적으로 Spanner 인스턴스의 읽기 및 쓰기 처리량은 인스턴스에 컴퓨팅 용량(노드 또는 처리 단위)을 추가할 때 선형적으로 확장됩니다. 예를 들어 2개의 노드가 있는 단일 리전 Spanner 인스턴스가 초당 최대 45,000개의 읽기를 제공할 수 있는 경우 4개의 노드가 있는 단일 리전 Spanner 인스턴스는 초당 최대 90,000개의 읽기를 제공할 수 있습니다.
Spanner에서 원하는 워크로드 성능이 표시되지 않으면 성능 회귀 문제 해결에서 일반적인 원인을 참조하세요.
저장용량 증가
일부 Spanner 리전 및 멀티 리전 인스턴스 구성의 경우 인스턴스에 포함된 컴퓨팅 용량의 각 노드(처리 단위 1,000개)에서 10TB 증가한 스토리지 용량이 제공됩니다. 다음 표에서는 사용 가능한 스토리지 용량이 증가한 인스턴스 구성을 보여줍니다.
리전별 인스턴스 구성 |
|
---|---|
멀티 리전 인스턴스 구성 |
|
일반적인 워크로드의 성능
사용 중인 인스턴스 구성에 향상된 성능 처리량이 적용되지 않은 경우 인스턴스에 포함된 컴퓨팅 용량의 각 노드(처리 단위 1,000개)에서 제공할 수 있는 대략적인 처리량(초당 쿼리 수)은 다음과 같습니다.
인스턴스 구성 유형 | 최대 읽기(리전별 QPS) | 최대 쓰기(QPS 합계) | |
---|---|---|---|
리전 | 15,000 | 또는 | 2,300 |
멀티 리전 (기본 구성별 분류) | 10,000 | 또는 | 1,800 |
선택적 읽기 전용 복제본을 허용하는 리전 인스턴스 구성의 경우 선택적 읽기 전용 복제본이 초당 5,000개의 추가 읽기를 지원할 수 있습니다.
멀티 리전 구성의 성능
각 Spanner 멀티 리전 인스턴스 구성은 복제 토폴로지에 따라 성능 특성이 약간씩 다릅니다. 처리량 최적화 쓰기를 사용하여 쓰기 처리량을 테이블의 숫자 이상으로 늘립니다.
컴퓨팅 용량의 각 1,000개의 처리 단위(1노드)는 100% CPU에서 다음과 같은 최대 성능을 제공할 수 있습니다.
기본 구성 이름 | 최대 읽기 근사치(리전별 QPS) | 최대 쓰기 근사치(QPS 합계) |
---|---|---|
asia1 |
15,000 | 2,700 |
asia2 |
15,000 | 2,700 |
eur3 |
15,000 | 2,700 |
eur5 |
15,000 | 2,700 |
eur6 |
15,000 선택사항인 읽기 전용 복제본당 7,500 |
2,700 |
nam3 |
15,000 선택사항인 읽기 전용 복제본당 7,500 |
2,700 |
nam6 |
us-central1 및 us-east1 에서 15,000, us-west1 및 us-west2 [1]에서 7,500 |
2,700 |
nam7 |
15,000 선택사항인 읽기 전용 복제본당 7,500 |
2,700 |
nam8 |
15,000 | 2,700 |
nam9 |
15,000 | 2,700 |
nam10 |
10,000 | 1,800 |
nam11 |
15,000 선택사항인 읽기 전용 복제본당 7,500 |
2,700 |
nam12 |
15,000 | 2,700 |
nam13 |
15,000 | 2,700 |
nam14 |
15,000 | 2,700 |
nam15 |
15,000 | 2,700 |
nam-eur-asia1 |
10,000 | 1,000 |
nam-eur-asia3 |
15,000 | 1,500 |
- [1]:
us-west1
및us-west2
는 리전당 2개의 복제본이 아닌 1개의 복제본을 포함하기 때문에 QPS 성능의 절반만 제공됩니다.
읽기는 어디서나 제공될 수 있기 때문에 읽기 안내는 리전별로 제공되지만 쓰기 안내는 전체 구성에 해당합니다. 읽기 및 쓰기 안내에서는 행당 1KB 데이터로 단일 행을 읽고 쓴다고 가정합니다.
Spanner에 대해 일반적인 워크로드 실행
용량 계획 시 항상 Spanner 인스턴스에 대해 일반적인 자체 워크로드를 실행하여 애플리케이션에 최적의 리소스 할당을 파악할 수 있습니다. Google의 PerfKit Benchmarker는 YCSB를 사용하여 클라우드 서비스를 벤치마킹합니다. Spanner용 PerfKitBenchmarker 튜토리얼에 따라 자신의 워크로드에 대한 테스트를 만들 수 있습니다. 그렇게 할 때 생성된 벤치마크가 프로덕션 환경의 다음 특성을 반영하도록 벤치마킹 구성 yaml
파일의 매개변수를 조정해야 합니다.
- 데이터베이스의 총 크기
- 스키마(예: row key 크기, 열 수, 행 데이터 크기)
- 데이터 액세스 패턴(row key 배포)
- 읽기와 쓰기의 혼합
- 쿼리의 유형 및 복잡성
벤치마크 번호 재현
벤치마크 번호를 재현하려면 throughput_benchmark 폴더에 있는 해당 yaml
파일을 사용하여 PerfKit Benchmarker로 Spanner 벤치마킹 튜토리얼을 따르세요.
성능 개선이 완료된 인스턴스 구성에서 인스턴스를 벤치마킹하려면 이러한 개선된 인스턴스 구성 중 하나에서 테스트가 실행 중인지 확인하세요.
영역 및 리전 장애 보호
프로덕션에서 워크로드를 실행할 때 전체 영역(리전 인스턴스의 경우) 또는 전체 리전(멀티 리전 인스턴스의 경우)이 손실될 경우 트래픽을 계속 처리할 수 있도록 충분한 컴퓨팅 용량을 프로비저닝하는 것이 중요합니다. 권장되는 최대 CPU에 대한 자세한 내용은 높은 CPU 사용량 알림을 참조하세요.
다음 단계
- Spanner 스키마 설계 방법 알아보기
- Spanner 성능 모니터링 방법 알아보기
- Key Visualizer로 문제 해결 방법 알아보기
- Spanner 가격 책정에 대해 알아보기