Asignación de consultas a las colas - Amazon Redshift

Asignación de consultas a las colas

Con Amazon Redshift, puede administrar la simultaneidad de las cargas de trabajo y priorizar las consultas asignándolas a las colas. Las colas le permiten asignar recursos, como memoria y CPU, para diferentes tipos de consultas o usuarios, lo que garantiza que las consultas críticas se prioricen sobre las menos importantes. En las secciones siguientes, se describe cómo crear colas, configurar las propiedades y asignar consultas entrantes en función de los criterios que defina.

En los siguientes ejemplos se asignan consultas a las colas según los roles de usuarios, grupos de usuarios y grupos de consultas.

Asignación de consultas a las colas en función de los roles de usuarios

Si se asigna un rol a un usuario y ese rol está adjunto a una cola, las consultas ejecutadas por ese usuario se asignan a esa cola. En el ejemplo siguiente se crea un rol de usuario denominado sales_rw y se asigna el usuario test_user a ese rol.

create role sales_rw; grant role sales_rw to test_user;

También puede combinar los permisos de dos roles mediante la concesión explícita de un rol a otro. Al asignar un rol anidado a un usuario, se conceden permisos de ambos roles al usuario.

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

Para ver la lista de usuarios a los que se les han asignado roles en el clúster, consulte la tabla SVV_USER_GRANTS. Para ver la lista de roles a los que se les han concedido roles en el clúster, consulte la tabla SVV_ROLE_GRANTS.

select * from svv_user_grants; select * from svv_role_grants;

Asignación de consultas a las colas en función de los grupos de usuarios

Si se muestra el nombre de un grupo de usuarios en la definición de una cola, las consultas que ejecuten los miembros de ese grupo de usuarios se asignan a la cola correspondiente. En el siguiente ejemplo, se crean grupos de usuarios y se añaden usuarios a los grupos mediante los comandos SQL CREAR USUARIO, CREATE GROUP y 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;

Asignación de una consulta a un grupo de consultas

Puede asignar una consulta a una cola en tiempo de ejecución asignando la consulta al grupo de consultas adecuado. Utilice el comando SET para comenzar un grupo de consultas.

SET query_group TO group_label

Aquí, group_label es una etiqueta de grupo de consultas que aparece en la configuración de la WLM.

Todas las consultas que ejecute después del comando SET query_group se ejecutarán como miembros del grupo de consultas especificado hasta que restablezca el grupo de consultas o finalice su inició de sesión actual. Para obtener información acerca de la configuración y el restablecimiento de objetos de Amazon Redshift, consulte SET y RESET en la Referencia de comandos SQL.

Las etiquetas de grupos de consultas que especifique deben estar incluidas en la configuración de WLM actual o, de lo contrario, el comando SET query_group no tendrá efecto en las colas de consultas.

La etiqueta definida en la cláusula TO se captura en los registros de consultas de modo que pueda utilizarla para solucionar problemas. Para obtener información acerca de los parámetros de configuración query_group, consulte query_group en la referencia de configuración.

En el siguiente ejemplo, se ejecutan dos consultas como parte de la "prioridad" del grupo de consultas y luego se restablece el grupo de consultas.

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;

Asignación de consultas a la cola de superusuario

Para asignar una consulta a la cola de superusuario, inicie sesión en Amazon Redshift como superusuario y, luego, ejecute la consulta en el grupo del superusuario. Cuando haya terminado, restablezca el grupo de consultas para que las consultas posteriores no se ejecuten en la cola de superusuario.

En el siguiente ejemplo, se asignan dos comandos para ejecutar en la cola de superusuario.

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

Consulte la tabla de catálogo del sistema PG_USER para ver una lista de superusuarios.

select * from pg_user where usesuper = 'true';