Snowflake에서 비용 통제하기

이 항목에서는 가상 웨어하우스 사용량에 대한 지출을 제한하는 데 사용할 수 있는 컨트롤 에 대해 설명합니다. 이러한 컨트롤은 가상 웨어하우스를 사용하는 실제 비용이 예상 비용을 초과하지 않도록 보장하는 데 도움이 됩니다.

이러한 컨트롤은 클라우드 서비스서버리스 기능 에는 적용되지 않습니다.

이 항목의 내용:

웨어하우스에 대한 액세스 제어

웨어하우스로 작업할 수 있는 사람과 그러한 웨어하우스로 할 수 있는 일을 신중하게 정의하면 비용 효율적인 구성이 있는 알려진 웨어하우스로 컴퓨팅 리소스 사용량을 제한하여 비용을 통제하는 데 도움이 됩니다. Snowflake의 세분화된 액세스 제어 를 사용하면 웨어하우스에 대해 다음 권한을 부여할 수 있습니다.

  • CREATE WAREHOUSE — 새 웨어하우스를 만들 수 있는 역할을 제한하는 전역 권한(즉, 계정에 부여되는 권한)으로, 개인이 비용 통제 수단이 마련되어 있는 기존 웨어하우스를 반드시 사용하도록 할 수 있습니다.

  • MODIFY — 웨어하우스 크기 조정 및 자동 일시 중단 설정 비활성화를 포함하여, 비용에 영향을 미치는 설정을 변경하도록 허용하는 특정 웨어하우스에 대한 권한입니다. 일반적으로, 사용자는 특정 워크로드에 맞춰 웨어하우스의 크기를 늘린 다음 원래 크기로 다시 변경하는 것을 잊어버리곤 하는데, 그러면 비용에 상당한 영향을 줄 수 있습니다.

  • USAGE — 쿼리 및 기타 SQL 작업에 대한 컴퓨팅 리소스를 제공하기 위해 웨어하우스 활성화를 허용하는 특정 웨어하우스에 대한 권한입니다. 이 권한을 신중하게 할당하면 사용자가 워크로드에 알맞은 크기와 구성의 웨어하우스만 사용할 수 있습니다.

웨어하우스를 만들고 확장하는 책임을 팀의 소수 구성원에게만 집중하는 것이 모범 사례로 간주됩니다. 모든 웨어하우스를 만들고 수정할 권한이 있는 전담 역할을 만든 다음 해당 역할을 제한된 수의 사용자에게 부여할 수 있습니다. 이를 통해 웨어하우스 정책을 제어하고 웨어하우스가 예기치 않게 생성되거나 규모가 커져 발생하는 우발적인 비용 초과를 막을 수 있습니다.

요구 수준이 더 높은 워크로드를 처리하기 위해 웨어하우스를 확장할 수 있기를 바라지만 사용자가 깜박 잊고서 나중에 크기를 다시 조정하지 않을 수도 있어 사용자에게 웨어하우스 크기를 늘릴 권한을 주고 싶지는 않을 경우에는 멀티 클러스터 웨어하우스 를 사용해 보십시오. 멀티 클러스터 웨어하우스는 워크로드가 변동함에 따라 자동으로 확장됩니다.

웨어하우스에 대해 설정할 수 있는 모든 권한의 목록은 가상 웨어하우스 권한 섹션을 참조하십시오.

최적의 웨어하우스 크기 선택하기

웨어하우스의 크기에 따라 한 시간에 쓸 수 있는 최대 크레딧 수가 결정됩니다. 예를 들어, Small 웨어하우스는 시간당 3크레딧 이상을 사용할 수 없습니다. 웨어하우스 크기와 웨어하우스가 사용하는 최대 크레딧 수의 전체 목록은 웨어하우스의 개요 섹션을 참조하십시오.

비용 관리를 위한 한 가지 모범 사례는 다양한 워크로드에 대해 서로 다른 웨어하우스를 사용하여 각 워크로드에 적합한 크기를 선택할 수 있도록 하는 것입니다. 웨어하우스에 가장 적합한 크기가 무엇인지 확실치 않으면 더 작은 크기부터 시작해 워크로드 성능과 SLA를 기준으로 서서히 늘려나가십시오.

워크로드에 알맞은 웨어하우스 선택에 대한 자세한 내용은 Snowflake 컴퓨팅 리소스 관리하기 (Snowflake 블로그 게시물)를 참조하십시오.

쿼리 시간 제한하기

멈춘 쿼리가 예상보다 오래 실행되어 지나치게 많은 크레딧을 사용합니다. 런어웨이 쿼리와 관련된 초과 비용이 발생하지 않도록, STATEMENT_TIMEOUT_IN_SECONDS 매개 변수를 설정하여 SQL 문이 취소되기 전까지 실행 가능한 최대 시간을 정의할 수 있습니다.

다양한 워크로드에 대한 예상 실행 시간과 일치하는 시간 제한을 신중하게 설정할 수 있도록 전체 계정, 사용자, 세션 또는 특정 웨어하우스에 대해 STATEMENT_TIMEOUT_IN_SECONDS 매개 변수를 설정할 수 있습니다. 이 매개 변수는 기본적으로 계정 수준에서 설정됩니다. 세션 외에도 웨어하우스에 대해 이 매개 변수를 설정하면 0이 아닌 가장 낮은 값이 적용됩니다.

다음 명령을 사용하여 현재 쿼리 시간 제한을 확인합니다.

SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' IN ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' IN USER <username>;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' IN SESSION;
SHOW PARAMETERS LIKE 'STATEMENT_TIMEOUT_IN_SECONDS' IN WAREHOUSE <warehouse_name>;

시간 제한을 조정할 필요가 있으면 다음 명령 중 하나를 사용하십시오.

ALTER ACCOUNT SET STATEMENT_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER USER <username> SET STATEMENT_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER WAREHOUSE <warehouse_name> SET STATEMENT_TIMEOUT_IN_SECONDS = <number_of_seconds>;

문 대기열 시간 제한하기

웨어하우스를 사용하기 위해 큐에 있는 SQL 문은 크레딧을 사용하지 않습니다. 하지만 쿼리가 큐에 머무는 시간이 너무 길면 막상 해당 쿼리 실행 시점에서는 될 때 더 이상 적절한 쿼리가 아닐 수도 있습니다. 더 이상 적절하지 않은 쿼리를 실행하면 크레딧이 낭비되므로, SQL 문이 취소되기 전까지 큐에 머물 수 있는 최대 시간을 설정하여 비용 통제 수단을 구현할 수 있습니다.

SQL 문이 큐에 머무는 시간을 제어하는 매개 변수는 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS 입니다. 전체 계정, 사용자, 세션 또는 특정 웨어하우스에 대해 이 매개 변수를 설정할 수 있습니다. 이 매개 변수는 기본적으로 계정 수준에서 설정됩니다. 세션 외에도 웨어하우스에 대해 이 매개 변수를 설정하면 0이 아닌 가장 낮은 값이 적용됩니다.

다음 명령을 사용하여 현재 큐 시간 제한을 확인합니다.

SHOW PARAMETERS LIKE 'STATEMENT_QUEUED_TIMEOUT_IN_SECONDS' IN ACCOUNT;
SHOW PARAMETERS LIKE 'STATEMENT_QUEUED_TIMEOUT_IN_SECONDS' IN USER <username>;
SHOW PARAMETERS LIKE 'STATEMENT_QUEUED_TIMEOUT_IN_SECONDS' IN SESSION;
SHOW PARAMETERS LIKE 'STATEMENT_QUEUED_TIMEOUT_IN_SECONDS' IN WAREHOUSE <warehouse_name>;

시간 제한을 조정할 필요가 있으면 다음 명령 중 하나를 사용하십시오.

ALTER ACCOUNT SET STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER USER <username> SET STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER SESSION SET STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <number_of_seconds>;
ALTER WAREHOUSE <warehouse_name> SET STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <number_of_seconds>;

자동 일시 중단 사용

기본적으로. 모든 웨어하우스에서는 자동 일시 중단 설정이 활성화되어 있는데, 이는 곧 웨어하우스가 정의된 기간 동안 비활성 상태일 때 자동으로 종료된다는 뜻입니다. 일시 중단된 웨어하우스는 크레딧을 사용하지 않으므로, 웨어하우스가 워크로드를 처리할 때만 비용이 발생합니다.

사용자가 자동 일시 중단 설정을 비활성화하지 못하도록 제한하면 사용되지 않는 웨어하우스가 크레딧을 낭비하지 못하게 하는 데 도움이 됩니다. 액세스 제어 를 사용하여 지정된 사용자가 웨어하우스를 사용하도록 허용할 수 있지만, 웨어하우스의 자동 일시 중단 설정을 수정하지 못하게 할 수도 있습니다.

쿼리: 자동 일시 중단이 해제된 웨어하우스 찾기

다음 쿼리를 사용하여 웨어하우스에 대해 자동 일시 중단 설정이 해제되었는지 주기적으로 확인하십시오.

SHOW WAREHOUSES
;
SELECT "name" AS WAREHOUSE_NAME
      ,"size" AS WAREHOUSE_SIZE
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE IFNULL("auto_suspend",0) = 0
;

자동 일시 중단이 해제된 웨어하우스에 대해 이를 활성화하려면 Snowsight, the Snowflake web interface 를 열고 Admin » Warehouses 로 이동하십시오. ALTER WAREHOUSE 명령의 AUTO_SUSPEND 매개 변수를 사용할 수도 있습니다.

자동 일시 중단과 함께 자동 재개 사용하기

일반적으로, 자동 일시 중단이 활성화된 모든 웨어하우스에는 자동 재개도 활성화되어 있어야 합니다. 이 두 가지 설정을 조합하면 웨어하우스의 워크로드가 변동함에 따라 웨어하우스가 자동으로 중지하고 시작합니다.

쿼리: 자동 재개가 해제된 웨어하우스 찾기

다음 쿼리를 실행하면 자동 재개가 활성화되지 않은 웨어하우스가 나열되므로 어떤 웨어하우스를 수정해야 할지 알 수 있습니다.

SHOW WAREHOUSES
;
SELECT "name" AS WAREHOUSE_NAME
      ,"size" AS WAREHOUSE_SIZE
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "auto_resume" = 'false'
;

자동 재개가 해제된 웨어하우스에 대해 이를 활성화하려면 Snowsight, the Snowflake web interface 를 열고 Admin » Warehouses 로 이동하십시오. ALTER WAREHOUSE 명령의 AUTO_RESUME 매개 변수를 사용할 수도 있습니다.

지출 제한 적용하기

리소스 모니터 는 특정 시간 간격 또는 날짜 범위 동안 웨어하우스에서 사용하는 크레딧에 대한 제한을 설정하는 기능을 제공합니다. 이는 웨어하우스가 의도와는 달리 일반적으로 예상되는 것보다 더 많은 크레딧을 사용하지 못하게 하는 데 도움이 될 수 있습니다.

때때로 리소스 모니터는 단순히 크레딧 제한에 도달할 때 그 사실을 관리자에게 알리지만, 제한에 도달하는 즉시 웨어하우스를 일시 중단하도록 리소스 모니터를 구성하여 제한을 적용 할 수도 있습니다. 제한을 적용할 때는 보류 중인 문이 실행되면 웨어하우스를 일시 중단하거나 문이 완료되기를 기다리지 않고 즉시 일시 중단하는 두 가지 옵션이 있습니다.

여러 웨어하우스 또는 한 계정 전체에 대해 단일 리소스 모니터를 설정할 수 있으므로, 전체 지출 제한에 도달할 때 여러 웨어하우스를 효과적으로 일시 중단할 수 있습니다. 자체 리소스 모니터와 계정별 리소스 모니터에 동시에 웨어하우스를 할당할 수 있습니다. 크레딧 제한 중 하나에 도달하면 웨어하우스가 일시 중단됩니다.

지출 제한에 도달할 때의 웨어하우스 일시 중단에 대한 자세한 내용은 리소스 모니터 관련 작업하기 섹션을 참조하십시오.

쿼리: 리소스 모니터가 해제된 웨어하우스 찾기

다음 쿼리를 실행하면 웨어하우스별 리소스 모니터에 할당되지 않아 통제 범위를 벗어나는 비용에 취약해지는 웨어하우스가 나열됩니다. 계정 수준 리소스 모니터가 있더라도 이 쿼리는 해당 계정에 웨어하우스별 모니터가 없는 웨어하우스를 계속 반환합니다.

SHOW WAREHOUSES
;
SELECT "name" AS WAREHOUSE_NAME
      ,"size" AS WAREHOUSE_SIZE
FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "resource_monitor" = 'null'
;

참고

Snowflake 아키텍처의 클라우드 서비스 계층은 리소스 모니터에 의해 일시 중단된 웨어하우스에 대해 쿼리가 실행되는 경우 여전히 약간의 비용을 일으킬 수 있습니다.

맨 위로 이동