컴퓨팅 용량, 노드, 처리 단위

이 페이지에서는 Spanner 컴퓨팅 용량과 이를 정량화하는 데 사용되는 두 가지 측정 단위인 노드와 처리 단위를 설명합니다.

컴퓨팅 용량

컴퓨팅 용량은 인스턴스의 데이터베이스에서 사용할 수 있는 서버 및 스토리지 리소스의 양을 정의합니다. 인스턴스를 만들 때 컴퓨팅 용량을 처리 단위 수 또는 노드 수로 지정합니다. 여기서 처리 단위는 1,000개는 노드 1개와 같습니다.

컴퓨팅 용량이 1,000개의 처리 단위(노드 1개)보다 작은 인스턴스를 만들지 않는 한 사용하는 처리 단위는 중요하지 않습니다. 이 경우, 인스턴스의 컴퓨팅 용량을 지정하려면 처리 단위를 사용해야 합니다.

인스턴스에서 컴퓨팅 용량을 정의하거나 변경할 때는 처리 단위를 100의 배수(100, 200, 300 등)로 지정합니다. 처리 단위 수가 1,000개에 도달하면 더 많은 수량을 처리 단위 1,000의 배수(1000, 2000, 3000 등) 또는 노드(1, 2, 3 등)로 지정할 수 있습니다.

처리 단위가 1,000개 미만인 인스턴스는 더 작은 데이터 크기, 쿼리, 워크로드를 대상으로 합니다. 이러한 인스턴스는 컴퓨팅 리소스가 제한되므로, 일부 워크로드의 경우 비선형 확장 및 성능 문제가 발생하고 지연 시간이 간헐적으로 증가할 수 있습니다.

데이터 스토리지 한도

할당량 및 한도에 설명된 대로 데이터베이스에 액세스할 때 고가용성과 짧은 지연 시간을 제공하기 위해 Spanner는 다음 가이드라인을 따라 인스턴스의 컴퓨팅 용량을 기준으로 저장용량 한도를 결정합니다.

  • 노드 1개(처리 단위 1,000개)보다 작은 인스턴스의 경우 Spanner는 데이터베이스에 있는 처리 단위 100개마다 409.6GB 데이터를 할당합니다.
  • 노드 1개보다 큰 인스턴스의 경우 Spanner는 노드마다 4TB 데이터를 할당합니다. 증가된 스토리지 용량(노드당 10TB)을 일부 리전, 이중 리전, 멀티 리전 Spanner 인스턴스 구성에서 사용할 수 있습니다. 자세한 내용은 성능 및 스토리지 개선사항을 참조하세요.

예를 들어 300GB 데이터베이스의 인스턴스를 만들려면 컴퓨팅 용량을 처리 단위 100개로 설정하면 됩니다. 이렇게 하면 데이터베이스 크기가 409.6GB를 초과할 때까지 인스턴스를 한도 이하로 유지할 수 있습니다. 데이터베이스가 409.6GB에 도달하면 데이터베이스 확장을 위해 처리 단위 100개를 추가해야 합니다. 그렇지 않으면 Spanner에서 데이터베이스에 대한 쓰기를 거부할 수 있습니다. 자세한 내용은 데이터베이스 스토리지 사용률 권장사항을 참조하세요.

Spanner는 총 스토리지 할당량이 아니라 인스턴스에서 실제로 사용되는 스토리지에 대해 비용을 청구합니다.

성능

지정된 컴퓨팅 용량으로 제공할 수 있는 최대 읽기 및 쓰기 처리량 값은 스키마 디자인과 데이터 세트 특성뿐 아니라 인스턴스 구성에 따라 다릅니다. 자세한 내용은 성능 개요를 참고하세요.

처리 단위가 1,000개 미만인 인스턴스는 더 작은 데이터 크기, 쿼리, 워크로드를 대상으로 합니다. 대규모 워크로드의 경우 제한된 컴퓨팅 리소스로 인해 비선형 확장 및 성능 문제가 발생하고 지연 시간이 간헐적으로 증가할 수 있습니다.

컴퓨팅 용량 및 인스턴스 구성

리전, 이중 리전, 멀티 리전 구성에 설명된 대로 Spanner는 하나 이상의 리전 영역에 인스턴스를 분산하여 높은 성능과 고가용성을 제공합니다. 따라서 Spanner는 인스턴스의 컴퓨팅 용량에서 제공하는 서버 리소스도 배포합니다.

다음은 이러한 서버 리소스 분포를 보여주는 다이어그램입니다.

리전 인스턴스 구성에서 생성된 인스턴스 2개

이 다이어그램은 리전 구성이 있는 두 인스턴스를 보여줍니다.

  • Instance-A는 3개의 영역 각각에서 서버 리소스를 소비하는 컴퓨팅 용량 분산이 있는 1,000개의 처리 단위(노드 1개)의 인스턴스를 보여줍니다.
  • Instance-B는 3개의 영역 각각에서 서버 리소스를 소비하는 컴퓨팅 용량 분산이 있는 2,000개의 처리 단위(노드 2개)의 인스턴스를 보여줍니다.

이 다이어그램에서 다음 사항에 주목하세요.

  • 각 인스턴스에 대해 Spanner는 리전 구성의 각 영역에 서버 리소스를 할당합니다. 각 영역별 서버 리소스는 해당 영역의 데이터 복제본을 사용합니다. 인스턴스 구성의 데이터 복제본에 대한 자세한 내용은 리전, 이중 리전, 멀티 리전 구성을 참고하세요. Spanner가 이러한 데이터 복제본을 동기화 상태로 유지하는 방법에 대한 자세한 내용은 복제를 참조하세요.

  • Instance-A의 서버 리소스는 단일 상자로 표시되고 Instance-B의 리소스는 두 개의 부분으로 구분된 상자로 표시됩니다. 이러한 차이는 Spanner가 크기가 다른 인스턴스에 대해 서버 리소스를 다르게 할당한다는 것을 보여줍니다.

    • 처리 단위 1,000개(노드 1개) 이하의 인스턴스의 경우 Spanner는 영역당 단일 서버 태스크에 서버 리소스를 할당합니다.
    • 처리 단위 1,000개(노드 1개)를 초과하는 인스턴스의 경우 Spanner는 영역당 여러 서버 태스크에 서버 리소스를 할당합니다(처리 단위 1,000개마다 하나의 태스크). 영역당 여러 서버 태스크를 사용하면 성능이 향상되고 Spanner가 데이터베이스 분할을 만들고 더 나은 성능을 제공합니다.

컴퓨팅 용량 변경

인스턴스를 만든 후에는 컴퓨팅 용량을 나중에 늘릴 수 있습니다. 대부분의 경우 몇 분 내에 요청이 완료됩니다. 드문 경우지만 수직 확장을 완료하는 데 최대 1시간까지 걸릴 수 있습니다.

대부분의 경우 컴퓨팅 용량을 줄일 수도 있습니다. 컴퓨팅 용량을 줄일 수 없는 경우도 일부 있습니다.

  • 컴퓨팅 용량을 삭제하려면 인스턴스에서 처리 단위 1,000개(노드 1개)당 데이터를 4TB 넘게 저장해야 하는 경우
  • 과거 사용량 패턴에 따라 Spanner에서 다수의 인스턴스 데이터 분할을 만들었으며 드물게는 컴퓨팅 용량 삭제 후에 Spanner에서 분할을 관리할 수 없게 되는 경우

후자의 경우 Spanner에서 모든 인스턴스 분할을 관리하는 데 필요한 최소 용량을 확보할 때까지 컴퓨팅 용량을 점진적으로 조금씩 줄여봅니다. 사용량 패턴 변경으로 인해 인스턴스에 더 이상 많은 분할이 필요하지 않은 경우 Spanner에서 일부 분할을 병합하여 1~2주 후에 인스턴스의 컴퓨팅 용량을 더 줄일 수 있습니다.

컴퓨팅 용량을 삭제할 때 CPU 사용률을 모니터링하고 Cloud Monitoring에서 지연 시간을 요청하여 CPU 사용률이 리전 인스턴스의 경우 65% 미만, 멀티 리전 인스턴스의 각 리전에서 45% 미만으로 유지되도록 합니다. 컴퓨팅 용량을 삭제하는 동안 요청 지연 시간이 일시적으로 늘어날 수 있습니다.

Spanner에는 정지 모드가 없습니다. Spanner 컴퓨팅 용량은 전용 리소스이므로 워크로드를 실행하지 않는 경우에도 Spanner는 백그라운드 작업을 자주 수행하여 데이터를 최적화하고 보호합니다.

Google Cloud 콘솔, Google Cloud CLI 또는 Spanner 클라이언트 라이브러리를 사용하여 컴퓨팅 용량을 변경할 수 있습니다. 자세한 내용은 컴퓨팅 용량 변경을 참조하세요.

컴퓨팅 용량과 복제본 비교

인스턴스의 서버 및 스토리지 리소스를 수직 확장해야 하는 경우 인스턴스의 컴퓨팅 용량을 늘립니다. 컴퓨팅 용량을 늘려도 지정된 인스턴스 구성에서 일정한 복제본 수는 늘어나지 않지만 인스턴스에서 각 복제본의 리소스는 늘어납니다. 컴퓨팅 용량을 늘리면 각 복제본에 더 많은 CPU와 RAM이 제공되어 복제본의 처리량이 늘어납니다. 즉, 초당 읽기 및 쓰기 처리량이 늘어납니다.

다음 단계