웨어하우스 고려 사항

이 항목에서는 Snowflake에서 가상 웨어하우스를 사용하여 쿼리를 처리하기 위한 일반 지침 및 모범 사례를 제공합니다. 구체적이거나 절대적인 숫자, 값 또는 권장 사항은 제공되지 않습니다. 왜냐하면 모든 쿼리 시나리오가 다르며 쿼리 시나리오는 동시 사용자/쿼리 수, 쿼리 중인 테이블 수, 데이터 크기 및 구성, 웨어하우스 가용성, 대기 시간 및 비용에 대한 특정 요구 사항 등 다양한 요인으로부터 영향을 받기 때문입니다.

또한, 다른 항목에서 설명하는 데이터 로딩 관련 웨어하우스 고려 사항에 대한 설명은 제공되지 않습니다 (사이드바 참조).

웨어하우스를 효과적이고 효율적으로 사용하기 위한 핵심 사항은 다음과 같습니다.

  1. 다양한 쿼리 타입과 다양한 웨어하우스 크기로 실험을 수행하여 특정 쿼리 요구 사항과 워크로드에 가장 적합한 조합을 결정해야 합니다.

  2. 웨어하우스의 크기에 초점을 맞추지 마십시오. Snowflake에서는 초당 청구 방식이 사용되므로 더 큰 웨어하우스(Large, X-Large, 2X-Large 등)를 실행하고 사용하지 않을 때에는 편리하게 일시 중단할 수 있습니다.

참고

이러한 지침 및 모범 사례는 모든 계정에 대한 표준인 단일 클러스터 웨어하우스와 Snowflake Enterprise Edition 이상에서 사용할 수 있는 멀티 클러스터 웨어하우스 모두에 적용됩니다.

이 항목의 내용:

웨어하우스와 관련하여 크레딧은 어떻게 청구됩니까?

크레딧 청구가 계산되는 기준은 다음과 같습니다.

예:

X-Small:

각 클러스터가 실행되는 연속 시간당 1 크레딧이 청구되며, 일반적으로 각 연속 크기는 웨어하우스당 컴퓨팅 리소스 수가 두 배로 증가합니다.

4X-Large:

각 클러스터가 실행되는 연속 시간당 128 크레딧이 청구됩니다.

다음 사항을 참고하십시오.

  • 컴퓨팅 리소스가 웨어하우스용으로 프로비저닝되는 경우:

    • 컴퓨팅 리소스를 프로비저닝하기 위한 최소 청구 요금은 1분(60초)입니다.

    • 첫 60초의 시간이 종료되기 전 웨어하우스를 중지하면 해당 시간에 대한 크레딧이 이미 청구되었으므로 이점이 없습니다.

    • 처음 60초 이후에 실행하는 웨어하우스에 대한 모든 후속 청구는 초 단위로 청구됩니다(모든 컴퓨팅 리소스가 종료될 때까지). 아래에는 3가지 예가 제공됩니다.

      • 웨어하우스가 30~60초 동안 실행되면 60초에 대한 요금이 청구됩니다.

      • 웨어하우스가 61초 동안 실행되면 61초에 대한 요금이 청구됩니다.

      • 웨어하우스가 61초 동안 실행되고 종료된 후 다시 시작되어 60초 미만 동안 실행되면 121초(60 + 1 + 60)에 대한 요금이 청구됩니다.

  • 웨어하우스의 크기를 조정하면 웨어하우스에서 클러스터에 대한 추가 컴퓨팅 리소스가 프로비저닝됩니다.

    • 이로 인해 웨어하우스에 대해(추가 컴퓨팅 리소스가 실행되는 동안) 청구되는 크레딧 수가 증가합니다.

    • 추가 컴퓨팅 리소스는 프로비저닝 시점에 요금이 청구됩니다(즉, 추가 리소스에 대한 크레딧은 웨어하우스의 크기가 조정되는 시간을 기준으로 청구됨).

    • 5XL 또는 6XL 웨어하우스에서 4XL 이하 크기의 웨어하우스로 크기를 변경하면 기존 웨어하우스가 중지되는 짧은 기간 동안 새 웨어하우스와 기존 웨어하우스 모두가 고객에게 과금됩니다.

    • 크레딧 사용은 시간 증분 단위로 표시됩니다. 초 단위로 요금이 청구되면 크레딧 사용/청구에 대한 부분 금액이 표시됩니다.

쿼리 구성은 어떻게 웨어하우스 처리에 영향을 줍니까?

쿼리를 처리하기 위해 컴퓨팅 리소스는 쿼리의 크기 및 복잡성에 따라 다릅니다. 대부분의 경우에는 웨어하우스 크기에 따라 쿼리가 선형적으로 증가하며, 특히 크고 복잡한 쿼리의 경우 더욱 그러합니다. 쿼리 처리에 영향을 주는 요인을 고려할 때 고려해야 할 사항은 다음과 같습니다.

  • 쿼리 대상 테이블의 전체 크기는 행 수보다 더 큰 영향을 줍니다.

  • 조건자를 사용한 쿼리 필터링은 쿼리의 조인/테이블 수와 유사하게 처리에 영향을 줍니다.

최상의 결과를 위해서는 동일한 웨어하우스에서 비교적 같은 유형의 쿼리(크기, 복잡성, 데이터 세트 등)를 실행해야 하며, 동일한 웨어하우스에서 다양한 크기 및/또는 복잡성의 쿼리를 실행하면 웨어하우스의 로드를 분석하기가 더욱 어려워지므로 워크로드의 쿼리 크기, 구성 및 수와 일치하는 최적의 크기를 선택하기가 더 어려울 수 있습니다.

쿼리에 대한 웨어하우스 캐싱의 영향은 무엇입니까?

실행 중인 각 웨어하우스는 웨어하우스에서 쿼리를 처리할 때 액세스하는 테이블 데이터의 캐시에 대한 유지 관리를 수행합니다. 이를 통해 쿼리의 테이블이 아닌 캐시에서 후속 쿼리를 읽을 수 있는 경우 후속 쿼리의 성능이 향상됩니다. 캐시의 크기는 웨어하우스의 컴퓨팅 리소스에 의해 결정됩니다(즉, 웨어하우스의 크기가 커 웨어하우스의 컴퓨팅 리소스가 증가하면 캐시의 크기도 증가).

이러한 캐시는 웨어하우스가 일시 중단될 때 삭제되므로, 웨어하우스를 재개한 후에는 일부 쿼리의 초기 성능이 느려질 수 있습니다. 재개된 웨어하우스에서 쿼리가 실행 및 처리량이 증가함에 따라 캐시가 다시 작성되며, 캐시를 사용할 수 있는 쿼리의 성능이 향상됩니다.

웨어하우스의 일시 중단 여부를 결정할 때는 이러한 점을 염두 해야 합니다. 즉, 웨어하우스의 일시 중단을 통한 크레딧 절약과 이전 쿼리의 데이터 캐시를 유지함으로써 달성되는 성능 향상 사이의 절충점을 고려해야 합니다.

웨어하우스 만들기

웨어하우스를 생성할 때 비용 및 성능의 측면에서 고려해야 할 가장 중요한 두 가지 요소는 다음과 같습니다.

  • 웨어하우스 크기(즉, 사용할 수 있는 컴퓨팅 리소스)

  • 수동 vs 자동 관리(웨어하우스 시작/다시 시작 및 일시 중단의 경우).

Snowflake Enterprise Edition 이상 및 멀티 클러스터 웨어하우스 를 사용하는 경우에는 웨어하우스의 클러스터 수도 중요합니다. 자세한 내용은 이 항목의 스케일 업 vs 스케일 아웃 섹션을 참조하십시오.

초기 웨어하우스 크기 선택하기

초기 웨어하우스 크기는 웨어하우스에서 수행되는 작업 및 처리하는 워크로드에 따라 선택해야 합니다. 예:

  • 데이터 로딩의 경우 웨어하우스의 크기는 로드될 파일 수 및 각 파일의 데이터 양과 일치해야 합니다. 자세한 내용은 데이터 로드 계획하기 섹션을 참조하십시오.

  • 소규모 테스트 환경에서 수행되는 쿼리의 경우 더 작은 크기(X-Small, Small, Medium)의 웨어하우스가 충분할 수 있습니다.

  • 대규모 프로덕션 환경에서 수행되는 쿼리의 경우 더 큰 크기(Large, X-Large, 2X-Large 등)의 웨어하우스가 비용 대비 효율적일 수 있습니다.

그러나 초당 크레딧 청구 및 자동 일시 중단을 사용하여 더 큰 크기로 시작한 후 워크로드에 따라 크기를 조정할 수 있는 유연성이 제공됩니다. 웨어하우스의 크기는 언제든지 줄일 수 있습니다.

또한, 소규모의 기본적인 쿼리의 경우에는 크기가 크다고 해서 빠르게 수행되는 것이 아닙니다. 일반적으로 소규모/단순 쿼리는 동시에 처리되는 쿼리 수에 관계없이 추가 리소스의 이점을 활용할 수 없기 때문에 X-Large 이상의 웨어하우스가 필요하지 않습니다. 일반적으로는 웨어하우스에서 처리될 것으로 예상되는 쿼리의 크기 및 복잡성과 웨어하우스의 크기가 일치하도록 해야 합니다.

다양한 크기(예: X-Large, Large, Medium)의 웨어하우스를 대상으로 동일한 쿼리를 실행하여 실험을 수행합니다. 실험을 수행할 쿼리의 크기와 복잡성은 일반적으로 5~10분 또는 그 이하 이내에 완료될 수 있어야 합니다.

웨어하우스 일시 중단 자동화하기

지정된 기간 동안 활동이 없는 경우 웨어하우스를 자동으로 일시 중단하도록 설정할 수 있습니다. 웨어하우스에 대한 비활성 기간(분, 시간 등)을 지정하여 자동 일시 중단을 활성화합니다.

Snowflake는 워크로드 및 웨어하우스 가용성 요구 사항에 따라 자동 일시 중단을 설정하는 것을 권장합니다.

  • Snowflake에서는 초당 청구가 적용되므로 자동 일시 중단을 활성화하는 경우에는 낮은 값(예: 5분 또는 10분 이하)으로 설정하는 것이 좋습니다. 이를 통해 사용하지 않을 때 웨어하우스가 실행(및 크레딧 소모)되는 것을 방지할 수 있습니다.

    그러나 사용자가 설정한 값은 쿼리 워크로드의 간격(있는 경우)과 일치해야 합니다. 예를 들어, 수신되는 쿼리 사이의 간격이 2분 또는 3분으로 규칙적인 경우 자동 일시 중단을 1분 또는 2분으로 설정하는 것은 의미가 없습니다. 왜냐하면 웨어하우스가 계속해서 일시 중단 및 재개(자동 재개도 활성화된 경우) 상태를 유지하며 재개될 때마다 최소 크레딧 사용(즉, 60초)이 청구되기 때문입니다.

  • 다음과 같은 경우에는 웨어하우스의 자동 일시 중단 비활성화를 고려할 수 있습니다.

    • 웨어하우스의 워크로드가 크고 지속적인 경우.

    • 지연이 발생하거나 연 시간 없이 웨어하우스를 사용할 수 있어야 하는 경우. 일반적으로 웨어하우스 프로비저닝은 매우 빠르게(예: 1초 또는 2초) 수행되지만, 웨어하우스의 크기 및 프로비저닝할 컴퓨팅 리소스의 가용성에 따라 시간이 더 오래 걸릴 수 있습니다.

중요

자동 일시 중단을 비활성화하면 웨어하우스에서 쿼리가 처리되지 않는 경우에도 지속적인 웨어하우스 실행과 관련된 비용을 신중하게 고려해야 합니다. 특히 크기가 큰 웨어하우스(X-Large, 2X-Large 등)의 경우 상당한 비용이 발생할 수 있습니다.

자동 일시 중단을 비활성화하려면 웹 인터페이스에서 Never 을 명확하게 선택하거나 SQL에서 0 또는 NULL 을 지정해야 합니다.

웨어하우스 다시 시작 자동화하기

새 쿼리가 제출될 때 웨어하우스가 자동으로 재개되도록 설정할 수 있습니다.

Snowflake는 특정 웨어하우스의 사용에 대한 제어 수준에 따라 자동 재개를 활성화/비활성화할 것을 권장합니다.

  • 비용 및 액세스가 문제가 되지 않는 경우에는 자동 재개를 활성화하여 필요할 때마다 웨어하우스를 시작할 수 있습니다. 프로비저닝으로 인해 웨어하우스의 다시 시작이 잠시 지연될 수 있다는 점에 유의하십시오.

  • 비용 및/또는 사용자 액세스를 제어하려면 자동 재개를 비활성화 상태로 유지하고 필요할 때만 웨어하우스를 수동으로 재개하십시오.

스케일 업 vs 스케일 아웃

Snowflake는 다음과 같은 두 가지 웨어하우스 방법을 지원합니다.

  • 웨어하우스의 크기를 조정하는 스케일 업.

  • 클러스터를 멀티 클러스터 웨어하우스에 추가하는 스케일 업(Snowflake Enterprise Edition 이상 필요).

성능을 향상하는 웨어하우스 크기 조정

웨어하우스의 크기를 조정하면 일반적으로 특히 크기가 크고 복잡한 쿼리의 쿼리 성능이 향상됩니다. 또한, 웨어하우스에 동시에 제출되는 모든 쿼리를 처리하기 위한 컴퓨팅 리소스가 부족한 경우 발생하는 큐를 줄이는 데 도움이 될 수 있습니다. 웨어하우스 크기 조정은 동시성 문제를 처리하기 위한 용도가 아니며, 추가 웨어하우스를 사용하여 워크로드를 처리하거나 멀티 클러스터 웨어하우스를 사용(이 기능을 계정에서 사용할 수 있는 경우)해야 함에 유의하십시오.

Snowflake는 실행 중인 경우에도 언제라도 웨어하우스 크기 조정을 지원합니다. 쿼리의 실행 속도가 느리고 동일한 웨어하우스에서 크기 및 복잡성이 유사한 추가 쿼리를 실행하려면 실행 중인 웨어하우스의 크기를 조정할 수 있지만, 다음 사항에 유의해야 합니다.

  • 웨어하우스 크기에 대한 이전의 설명과 같이, 크기가 큰 웨어하우스의 속도가 반드시 더 빠른 것은 아니며, 이미 빠른 속도로 실행 중인 크기가 작은 기본 쿼리의 경우 크기를 조정한 후에 속도가 크게 향상되지 않을 수 있습니다.

  • 실행 중인 웨어하우스의 크기를 조정해도 웨어하우스에서 이미 처리 중인 쿼리는 영향을 받지 않으며, 추가 컴퓨팅 리소스는 완전히 프로비저닝된 이후에 큐에 추가된 쿼리 및 새 쿼리에서만 사용됩니다.

  • 5XL 또는 6XL 웨어하우스에서 4XL 이하 크기의 웨어하우스로 크기를 변경하면 기존 웨어하우스가 중지되는 짧은 기간 동안 새 웨어하우스와 기존 웨어하우스 모두가 고객에게 과금됩니다.

실행 중인 웨어하우스의 크기를 줄이면 웨어하우스에서 컴퓨팅 리소스가 제거됩니다. 컴퓨팅 리소스가 제거되면 해당 리소스와 연결된 캐시가 삭제되며, 이는 일시 중단된 웨어하우스가 재개된 이후에 성능에 영향을 미치는 동일한 방식으로 성능에 영향을 미칠 수 있습니다.

실행 중인 웨어하우스의 크기를 줄일지 아니면 현재 크기를 유지할지 선택할 때 이에 유의하십시오. 즉, 크레딧 절약과의 캐시 유지 관리와 관련하여 절충할 수 있습니다.

동시성을 향상하는 멀티 클러스터 웨어하우스

멀티 클러스터 웨어하우스 는 많은 수의 동시 사용자 및/또는 쿼리와 관련된 큐 및 성능 문제를 처리하기 위해 특별하게 설계되었습니다. 또한, 멀티 클러스터 웨어하우스는 사용자/쿼리가 변동하는 경우 이러한 프로세스를 자동화하는 데 도움이 될 수 있습니다.

멀티 클러스터 웨어하우스의 사용 여부 및 멀티 클러스터 웨어하우스마다 사용할 클러스터 수를 결정할 때 고려해야 할 사항은 다음과 같습니다.

  • Snowflake Enterprise Edition 이상을 사용하는 경우에는 모든 웨어하우스를 멀티 클러스터 웨어하우스로 구성해야 합니다.

  • 최대화 모드에서의 실행과 관련한 특정 요구 사항이 있는 경우를 제외하고, 멀티 클러스터 웨어하우스는 필요에 따라 Snowflake가 자동으로 클러스터를 시작 및 중지할 수 있도록 하는 자동 크기 조정 모드에서 실행되도록 구성해야 합니다.

  • 멀티 클러스터 웨어하우스의 최소 및 최대 클러스터 수를 선택할 때:

    최소값:

    기본값인 1 을 유지합니다. 그러면 추가 클러스터가 필요할 때만 시작됩니다. 그러나 웨어하우스의 고가용성이 우려되는 경우에는 1 보다 큰 값으로 설정해야 합니다. 이는 드물긴 하지만 클러스터가 실패하는 경우에 멀티 클러스터 웨어하우스의 가용성 및 연속성을 보장하는 데 도움이 됩니다.

    최대값:

    최대한 큰 값으로 설정해야 하지만, 웨어하우스의 크기와 해당 크레딧 비용을 염두 해야 합니다. 예를 들어, 최대 클러스터 = 10 인 X-Large 멀티 클러스터 웨어하우스의 경우 클러스터 10개 모두가 1시간 동안 계속 실행되면 1시간에 160크레딧을 소비합니다.