Implementación de WLM manual
Con la WLM manual, puede administrar el rendimiento del sistema y la experiencia de los usuarios mediante la modificación de la configuración de la WLM para crear colas independientes para las consultas de ejecución prolongada y las de ejecución corta.
Cuando los usuarios ejecutan consultas en Amazon Redshift, estas se dirigen a las colas de consultas. Cada cola de consultas contiene un número de slots de consultas. A cada cola se le asigna una parte de la memoria disponible del clúster. La memoria de una cola se divide entre los slots de consultas de la cola. Puede habilitar Amazon Redshift para administrar la simultaneidad de las consultas con la WLM automática. Para obtener más información, consulte Implementación de WLM automática.
O puede configurar las propiedades de WLM para cada cola de consulta. Lo hace para especificar la forma en que se asigna la memoria entre ranuras y cómo se pueden dirigir las consultas a colas específicas en tiempo de ejecución. También es posible configurar propiedades de WLM para cancelar consultas de ejecución prolongada.
De forma predeterminada, Amazon Redshift configura las siguientes colas de consultas:
-
Una cola de superusuario
La cola de superusuario está reservada únicamente para superusuarios y no se puede configurar. Utilice esta cola solo cuando necesite ejecutar consultas que afectan al sistema o para solucionar problemas. Por ejemplo, utilice esta cola cuando necesite cancelar una consulta de ejecución prolongada de un usuario o para añadir usuarios a la base de datos. No la utilice para realizar consultas de rutina. La cola no aparece en la consola, pero sí lo hace en las tablas de sistema de la base de datos como la quinta cola. Para ejecutar una consulta en la cola de superusuario, es necesario que un usuario inicie sesión como superusuario y debe ejecutar la consulta mediante el grupo de consultas predefinido
superuser
. -
Una cola de usuario predeterminada
La cola predeterminada está configurada inicialmente para ejecutar cinco consultas de forma simultánea. Al usar WLM manual, puede cambiar las propiedades de simultaneidad, tiempo de espera y asignación de memoria para la cola predeterminada, pero no puede especificar grupos de usuarios ni de consultas. La cola predeterminada debe ser la última cola en la configuración de WLM. Cualquier consulta que no se direccione a otras colas se ejecuta en la cola predeterminada.
Las colas de consultas se definen en la configuración de WLM. La configuración de WLM es un parámetro modificable (wlm_json_configuration
) de un grupo de parámetros, que puede estar asociado a uno o más clústeres. Para obtener más información, consulte Configuración de la administración de cargas de trabajo en la Guía de administración de Amazon Redshift.
Puede añadir colas de consultas adicionales a la configuración de WLM predeterminada, hasta llegar a un total de ocho colas de usuario. Para cada cola de consultas, puede configurar lo siguiente:
-
Modo de escalado de simultaneidad
-
Nivel de simultaneidad
-
Grupos de usuarios
-
Grupos de consultas
-
Porcentaje de memoria de WLM por utilizar
-
Tiempo de espera de WLM
-
Salto de cola de consultas de WLM
-
Reglas de monitorización de consultas
Modo de escalado de simultaneidad
Cuando el escalado de simultaneidad está habilitado, Amazon Redshift agrega capacidad del clúster de manera automática si se necesita para procesar un aumento de las consultas de lectura y escritura simultáneas. Los usuarios ven siempre los datos más actualizados, tanto si las consultas se ejecutan en el clúster principal como si se ejecutan en un clúster de escalado de simultaneidad.
Puede administrar qué consultas se envían al clúster de escalado de simultaneidad configurando colas de WLM. Cuando habilita el escalado de simultaneidad para una cola, las consultas elegibles se envían al clúster de escalado de simultaneidad en lugar de esperar en la cola. Para obtener más información, consulte Escalado de simultaneidad.
Nivel de simultaneidad
Las consultas de una cola se ejecutan simultáneamente hasta que se alcanza el número de slots de consultas de WLM o el nivel de simultaneidad definido para esa cola. Las consultas posteriores esperan en la cola.
nota
El nivel de simultaneidad de WLM es distinto del número de conexiones de usuario simultáneas que se pueden realizar en un clúster. Para obtener más información, consulte Conexión a un clúster en la Guía de administración de Amazon Redshift.
En una configuración de WLM automática, que es la recomendada, el nivel de simultaneidad se establece a Automático. Amazon Redshift asigna memoria de forma dinámica a las consultas y, posteriormente, determina cuántas se ejecutarán de forma simultánea. Se basa en los recursos necesarios tanto para las consultas en ejecución como para las que están en cola. No se puede configurar WLM automática. Para obtener más información, consulte Implementación de WLM automática.
En una configuración de WLM manual, Amazon Redshift asigna de forma estática una cantidad fija de memoria a cada cola. La memoria de la cola se divide en partes iguales entre las ranuras de consulta. A modo de ejemplo, si a una cola se le asigna el 20 % de la memoria de un clúster y tiene 10 ranuras, a cada consulta se le asigna el 2 % de la memoria del clúster. La asignación de memoria permanece fija independientemente del número de consultas que se ejecuten de forma simultánea. Debido a esta asignación de memoria fija, las consultas que se ejecutan completamente en la memoria cuando el número de ranuras es 5, puede que deba escribir resultados intermedios en el disco si el número de ranuras aumenta a 20. En este caso, la cuota de memoria de la cola correspondiente a cada consulta se reduce de un 1/5 a un 1/20. La E/S adicional del disco puede degradar el rendimiento.
El número máximo de ranuras de consultas para todas las colas definidas por el usuario es de 50. Esto limita el total de ranuras para todas las colas, incluida la cola predeterminada. La única cola que no está sujeta al límite es la cola de superusuario reservada.
De forma predeterminada, las colas de WLM manuales tienen un nivel de simultaneidad de 5. La carga de trabajo puede beneficiarse de un nivel de simultaneidad más alto en determinados casos, como los siguientes:
-
Si hay muchas consultas pequeñas que tienen que esperar a que se ejecuten las consultas largas, cree una cola independiente con un mayor número de slots y asigne las consultas pequeñas a esa cola. Una cola con un nivel de simultaneidad más alto tiene menos memoria asignada a cada slot de consultas, pero las consultas más pequeñas requieren menos memoria.
nota
Si habilita la aceleración de consultas cortas (SQA), WLM dará prioridad automáticamente a las consultas cortas frente a las largas, por lo que no será necesario que separe la cola de las consultas cortas en la mayoría de los flujos de trabajo. Para obtener más información, consulte Aceleración de consultas cortas.
-
Si varias colas tienen acceso a los datos de un mismo sector, configure una cola de WLM independiente para ejecutar esas consultas de manera simultánea. Amazon Redshift asigna consultas simultáneas a diferentes sectores, lo que permite que varias consultas se ejecuten en paralelo en distintos sectores. Por ejemplo, si una consulta es un conjunto simple con un predicado en la clave de distribución, los datos para la consulta se ubican en un sector único.
Un ejemplo de WLM manual
Este ejemplo es un escenario de WLM sencillo y manual para mostrar cómo se pueden asignar las ranuras y la memoria. La WLM manual se implementa con tres colas, que son las siguientes:
cola de ingesta de datos: está configurada para ingerir datos. Se le asigna el 20 % de la memoria del clúster y tiene 5 ranuras. Posteriormente, se pueden ejecutar 5 consultas de forma simultánea en la cola y a cada una se le asigna el 4 % de la memoria.
cola de científicos de datos: está diseñada para consultas que consumen mucha memoria. Se le asigna el 40 % de la memoria del clúster y tiene 5 ranuras. Posteriormente, se pueden ejecutar 5 consultas de forma simultánea y a cada una se le asigna el 8 % de la memoria.
cola predeterminada: está diseñada para la mayoría de los usuarios de la organización. Se incluyen los grupos de ventas y contabilidad que normalmente tienen consultas de corta o mediana duración que no son complicadas. Se le asigna el 40 % de la memoria del clúster y tiene 40 ranuras. Se pueden ejecutar 40 consultas simultáneamente en esta cola y a cada consulta se le asigna el 1 % de la memoria. Es el número máximo de ranuras que se pueden asignar a esta cola, ya que el límite entre todas las colas es de 50.
Si ejecuta WLM automática y su carga de trabajo requiere que más de 15 consultas se ejecuten en paralelo, le recomendamos que active el escalado de simultaneidad. El motivo es que, al aumentar el número de ranuras de consulta por encima de 15, se podría provocar la contención de los recursos del sistema y que se limitara el rendimiento general de un único clúster. Con el escalado de simultaneidad, puede ejecutar cientos de consultas en paralelo hasta alcanzar el número de clústeres de escalado de simultaneidad establecido. max_concurrency_scaling_clusters controla el número de clústeres de escalado de simultaneidad. Para obtener más información acerca del escalado de simultaneidad, consulte Escalado de simultaneidad.
Para obtener más información, consulte Mejora del rendimiento de las consultas.
Grupos de usuarios
Puede asignar un conjunto de grupos de usuarios a una cola especificando cada nombre de grupo de usuarios o utilizando comodines. Cuando un miembro de un grupo de usuarios de la lista ejecuta una consulta, esa consulta se ejecuta en la cola correspondiente. No hay un límite establecido en cuanto al número de grupos de usuarios que se pueden asignar a una cola. Para obtener más información, consulte Asignación de consultas a las colas en función de los grupos de usuarios.
Grupos de consultas
Puede asignar un conjunto de grupos de consultas a una cola especificando cada nombre de grupo de consultas o utilizando comodines. Un grupo de consultas es sencillamente una etiqueta. En tiempo de ejecución, puede asignar la etiqueta de grupo de consultas a un conjunto de consultas. Cualquier consulta que se asigne a un grupo de consultas de la lista se ejecuta en la cola correspondiente. No hay un límite establecido para el número de grupos de consultas que se pueden asignar a una cola. Para obtener más información, consulte Asignación de una consulta a un grupo de consultas.
Caracteres comodín
Si los comodines están habilitados en la configuración de la cola de WLM, puede asignar grupos de usuarios y de consultas a una cola individualmente o utilizando los comodines de estilo shell Unix. La coincidencia de patrones no distingue entre mayúsculas y minúsculas.
Por ejemplo, el comodín «*» coincide con cualquier número de caracteres. Así, si añade dba_*
a la lista de grupos de usuario para una cola, cualquier consulta ejecutada por un usuario que pertenece a un grupo con un nombre que comienza por dba_
se asigna a esa cola. Algunos ejemplos son dba_admin
o DBA_primary
. El comodín «?» coincide con cualquier carácter individual. Así, si la cola incluye el grupo de usuarios dba?1
, entonces los grupos de usuarios denominados dba11
y dba21
coinciden, pero dba12
no coincide.
Los comodines se encuentran desactivados de forma predeterminada.
Porcentaje de memoria de WLM por utilizar
En una configuración de WLM automática, el porcentaje de memoria se establece en auto
. Para obtener más información, consulte Implementación de WLM automática.
En una configuración de WLM manual, para especificar la cantidad de memoria disponible que se asigna a una consulta, puede establecer el parámetro WLM Memory Percent to Use
. De forma predeterminada, a cada cola definida por el usuario se le asigna una parte igual de la memoria que esté disponible para consultas definidas por el usuario. Por ejemplo, si tiene cuatro colas definidas por el usuario, a cada cola se le asigna un 25 por ciento de la memoria disponible. La cola de superusuario tiene su propia memoria asignada y no puede modificarse. Para cambiar la asignación, asigne un porcentaje entero de memoria a cada cola, hasta llegar a un total de 100 por ciento. Amazon Redshift administra la memoria que ha quedado sin asignar, la cual se puede asignar de forma temporal a una cola si esta solicita memoria adicional para el procesamiento.
Por ejemplo, si configura cuatro colas, puede asignar la memoria de la siguiente forma: 20 por ciento, 30 por ciento, 15 por ciento, 15 por ciento. El 20 por ciento restante queda sin asignar y lo administra el servicio.
Tiempo de espera de WLM
El tiempo de espera de WLM (max_execution_time
) no está disponible. En su lugar, cree una regla de monitorización de consultas (QMR) utilizando query_execution_time
para limitar el tiempo de ejecución transcurrido de una consulta. Para obtener más información, consulte Reglas de monitoreo de consultas de WLM.
Para limitar la cantidad de tiempo que las consultas de una determinada cola de WLM tienen permitido utilizar, puede establecer el valor de tiempo de espera de WLM para cada cola. El parámetro de tiempo de espera especifica la cantidad de tiempo, en milisegundos, que Amazon Redshift espera para que se ejecute una consulta antes de cancelarla o saltarla. El tiempo de espera se basa en el tiempo de ejecución de consultas y no incluye el tiempo de espera empleado en una cola.
WLM intenta transferir las instrucciones CREATE TABLE AS (CTAS) y las consultas de solo lectura, como las instrucciones SELECT. Las consultas que no se pueden transferir se cancelan. Para obtener más información, consulte Salto de cola de consultas de WLM.
El tiempo de espera de WLM no aplica a una consulta que haya alcanzado el estado de devolución. Para ver el estado de una consulta, consulte la tabla de sistema STV_WLM_QUERY_STATE. Las instrucciones COPY y las operaciones de mantenimiento, como ANALYZE y VACUUM, no están sujetas al tiempo de espera de WLM.
La función de tiempo de espera de WLM es similar al parámetro de configuración statement_timeout. La diferencia es que, en los casos que el parámetro de configuración statement_timeout
aplica a todo el clúster, el tiempo de espera de WLM es específico de una cola individual en la configuración de WLM.
Si también se especifica statement_timeout, se utiliza el statement_timeout y el tiempo de espera de WLM (max_execution_time) inferiores.
Reglas de monitorización de consultas
Las reglas de monitorización de consultas definen los límites de rendimiento basados en métricas para las colas de WLM y especifican la acción que se debe realizar cuando una consulta va más allá de esos límites. Por ejemplo, para una cola dedicada a consultas de ejecución corta, puede crear una regla que cancele las consultas que se ejecuten durante más de 60 segundos. Para hacer un seguimiento de las consultas mal diseñadas, puede disponer de otra regla que registre las consultas que contienen bucles anidados. Para obtener más información, consulte Reglas de monitoreo de consultas de WLM.