대기열에 쿼리 할당 - Amazon Redshift

대기열에 쿼리 할당

다음은 사용자 역할, 사용자 그룹 및 쿼리 그룹에 따라 쿼리를 대기열에 할당하는 예입니다.

사용자 역할을 기반으로 대기열에 쿼리 할당

사용자에게 역할이 할당되고 해당 역할이 큐에 연결되어 있는 경우 해당 사용자가 실행하는 쿼리가 해당 큐에 할당됩니다. 다음 예에서는 sales_rw라는 사용자 역할을 만들고 해당 역할에 test_user 사용자를 할당합니다.

create role sales_rw; grant role sales_rw to test_user;

한 역할을 다른 역할에 명시적으로 부여하여 두 역할의 권한을 결합할 수도 있습니다. 사용자에게 중첩된 역할을 할당하면 사용자에게 두 역할의 권한이 모두 부여됩니다.

create role sales_rw; create role sales_ro; grant role sales_ro to role sales_rw; grant role sales_rw to test_user;

클러스터에서 역할이 부여된 사용자 목록을 보려면 SVV_USER_GRANTS 테이블을 쿼리하세요. 클러스터에서 역할이 부여된 역할 목록을 보려면 SVV_ROLE_GRANTS 테이블을 쿼리하세요.

select * from svv_user_grants; select * from svv_role_grants;

사용자 그룹을 기반으로 대기열에 쿼리 할당

사용자 그룹 이름이 대기열 정의에 나열되어 있으면 나열된 사용자 그룹의 멤버가 실행하는 쿼리는 해당 대기열에 할당됩니다. 다음은 SQL 명령(사용자 생성, create groupALTER GROUP)을 사용하여 사용자 그룹을 생성한 후 사용자를 그룹에 추가하는 예입니다.

create group admin_group with user admin246, admin135, sec555; create user vp1234 in group ad_hoc_group password 'vpPass1234'; alter group admin_group add user analyst44, analyst45, analyst46;

쿼리 그룹에 쿼리 할당

적절한 쿼리 그룹에 쿼리를 할당하여 실행 시간에 쿼리를 대기열에 할당할 수 있습니다. SET 명령을 사용하여 쿼리 그룹을 시작합니다.

SET query_group TO group_label

여기서 group_label은 WLM 구성에 나열된 쿼리 그룹 레이블입니다.

SET query_group 명령 이후에 실행하는 쿼리는 모두 쿼리 그룹을 재설정하거나, 혹은 현재 로그인 세션을 종료할 때까지는 지정된 쿼리 그룹의 멤버로서 실행됩니다. Amazon Redshift 객체의 설정 및 재설정에 대한 자세한 내용은 SQL 명령 참조의 SETreset 섹션을 참조하세요.

지정하는 쿼리 그룹 레이블은 WLM 구성에도 포함되어야 합니다. 그렇지 않으면 SET query_group 명령을 실행해도 쿼리 대기열에 아무런 영향도 미치지 못합니다.

TO 절에서 정의하는 레이블은 쿼리 로그에도 수집되기 때문에 레이블을 문제 해결에도 사용할 수 있습니다. query_group 구성 파라미터에 대한 자세한 내용은 구성 참조에서 query_group 섹션을 참조하세요.

다음은 쿼리 그룹 'priority'에 속한 쿼리 2개를 실행한 후 쿼리 그룹을 재설정하는 예입니다.

set query_group to 'priority'; select count(*)from stv_blocklist; select query, elapsed, substring from svl_qlog order by query desc limit 5; reset query_group;

수퍼유저 대기열에 쿼리 할당

슈퍼 사용자 대기열에 쿼리를 할당하려면 먼저 슈퍼 사용자 권한으로 Amazon Redshift에 로그온한 후 슈퍼 사용자 그룹에서 쿼리를 실행합니다. 쿼리 실행을 모두 마치고 나면 이후 쿼리부터는 수퍼유저 대기열에서 실행되지 않도록 쿼리 그룹을 재설정해야 합니다.

다음은 실행할 명령 2개를 수퍼유저 대기열에서 할당하는 것을 보여주는 예입니다.

set query_group to 'superuser'; analyze; vacuum; reset query_group;

수퍼유저 목록을 보려면 PG_USER 시스템 카탈로그 테이블에 대해 쿼리합니다.

select * from pg_user where usesuper = 'true';