Assegnazione delle query alle code - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Assegnazione delle query alle code

I seguenti esempi consentono di assegnare le query alle code in base ai ruoli degli utenti, ai gruppi di utenti e ai gruppi di query.

Assegnazione delle query alle code in base ai ruoli degli utenti

Se a un utente è assegnato un ruolo e tale ruolo è collegato a una coda, le query eseguite da quell'utente vengono assegnate a tale coda. L'esempio seguente crea un ruolo utente denominato sales_rw e assegna l'utente test_user a quel ruolo.

create role sales_rw; grant role sales_rw to test_user;

Puoi anche combinare le autorizzazioni di due ruoli assegnando esplicitamente un ruolo a un altro ruolo. L'assegnazione di un ruolo nidificato a un utente concede all'utente le autorizzazioni di entrambi i ruoli.

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

Per visualizzare l'elenco degli utenti a cui sono stati concessi ruoli nel cluster, esegui una query sulla tabella SVV_USER_GRANTS. Per visualizzare l'elenco dei ruoli a cui sono stati concessi ruoli nel cluster, esegui una query sulla tabella SVV_ROLE_GRANTS.

select * from svv_user_grants; select * from svv_role_grants;

Assegnazione delle query alle code in base ai gruppi di utenti

Se il nome di un gruppo di utenti è elencato in una definizione di coda, le query eseguite dai membri di quel gruppo di utenti vengono assegnate alla coda corrispondente. L'esempio seguente crea gruppi di utenti e aggiungere utenti ai gruppi utilizzando i comandi SQL CREA UTENTE, CREATE GROUP e ALTER 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;

Assegnazione di una query a un gruppo di utenti

Puoi assegnare una query a una coda in fase di runtime assegnando la query al gruppo di query appropriato. Utilizza il comando SET per iniziare un gruppo di query.

SET query_group TO group_label

Qui, group_label è un'etichetta del gruppo di query elencata nella configurazione WLM.

Tutte le query eseguite dopo il comando SET query_group vengono eseguite come membri del gruppo di query specificato fino a quando non reimposti il gruppo di query o termini la sessione di accesso corrente. Per informazioni sull'impostazione e sulla reimpostazione di oggetti Amazon Redshift, consultare SET e RESET nella documentazione di riferimento relativa ai comandi SQL.

Le etichette del gruppo di query specificate devono essere incluse nella configurazione WLM corrente; in caso contrario, il comando SET query_group non ha alcun effetto sulle code di query.

L'etichetta definita nella clausola TO viene acquisita nei log delle query in modo da poterla utilizzare per la risoluzione dei problemi. Per informazioni sul parametro di configurazione query_group, vedi query_group nella documentazione di riferimento relativa alla configurazione.

L'esempio seguente esegue due query come parte del gruppo di query 'priority' e quindi reimposta il gruppo di query.

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;

Assegnazione delle query alla coda dell'utente con privilegi avanzati

Per assegnare una query alla coda dell'utente con privilegi avanzati, accedere ad Amazon Redshift come utente con privilegi avanzati ed eseguire la query nel gruppo di utenti con privilegi avanzati. Al termine, reimposta il gruppo di query in modo che le query successive non vengano eseguite nella coda dell'utente con privilegi avanzati.

L'esempio seguente assegna due comandi da eseguire nella coda dell'utente con privilegi avanzati.

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

Per visualizzare un elenco di utenti con privilegi avanzati, eseguire una query sulla tabella del catalogo di sistema PG_USER.

select * from pg_user where usesuper = 'true';