El rendimiento general de mis consultas y del clúster se degrada tras un periodo de mantenimiento en Amazon Redshift.
Descripción corta
Durante la actualización de una versión, Amazon Redshift borra la caché de consultas y la caché de compilación. Cuando se ejecuta una consulta por primera vez después de la actualización, el tiempo de compilación es mayor. Sin embargo, el rendimiento mejora gradualmente a medida que Amazon Redshift reconstruye su caché.
Amazon Redshift no cambia las versiones del clúster para todas las acciones del periodo de mantenimiento. Para identificar los cambios de versión, comprueba la columna redshift_version de la tabla SYS_QUERY_HISTORY.
Para obtener más información sobre los tipos de caché de Amazon Redshift, consulta Almacenamiento en caché de los resultados y Código compilado. Para obtener más información sobre el rendimiento de las consultas, consulta Factores que afectan al rendimiento de las consultas.
Resolución
Análisis del rendimiento de las consultas antes y después del mantenimiento
Identifica las consultas que se ejecutaron antes y después del mantenimiento. Puedes usar la consola de supervisión de consultas o la vista del sistema SYS_QUERY_HISTORY.
Para buscar las últimas 20 consultas de usuario, ejecuta la siguiente consulta:
SELECT * FROM sys_query_history
WHERE user_id>1
ORDER BY start_time desc
limit 20;
En el resultado, utiliza la columna user_query_hash para comparar consultas con el mismo texto de consulta. O bien, utiliza generic_query_hash para comparar consultas con un texto de consulta similar pero con literales de consulta diferentes.
Para ver cada vez que ejecutaste una consulta específica en los últimos 7 días, ejecuta la siguiente consulta:
SELECT * FROM sys_query_history
WHERE user_query_hash = 'ExampleText'
ORDER BY start_time desc;
Nota: Sustituye ExampleText por el valor hash de la consulta.
En el resultado, compara el valor de compile_time en diferentes ejecuciones. El tiempo de compilación de una consulta que ejecutaste inmediatamente después del mantenimiento puede ser mayor.
Para reducir los tiempos de compilación, programa las consultas clave para que se ejecuten después del mantenimiento o prepara las consultas críticas durante las horas de menor actividad.
Nota: El motor de ejecución de consultas compila un código diferente para los protocolos de conexión de Java Database Connectivity (JDBC) y Microsoft Open Database Connectivity (ODBC). Si tienes dos clientes que usan protocolos diferentes, cada cliente incurre en el coste inicial de compilar el código. Sin embargo, los clientes que usan el mismo protocolo comparten el código en caché. Cuando usas JDBC para conectarte al clúster y ejecutar una consulta, Amazon Redshift guarda la caché solo para las conexiones de JDBC. Si ejecutas la misma consulta en un cliente que usa ODBC, Amazon Redshift genera otra caché para la conexión de ODBC.
Solución de problemas
A veces, cuando las compilaciones de consultas muestran poca diferencia antes y después del mantenimiento, puede producirse un problema de rendimiento no relacionado. Utiliza la consola de supervisión de consultas y bases de datos para supervisar los picos inusuales en las métricas. Compara los tiempos de compilación para identificar el origen del problema.
Si no encuentras ningún pico pero sigues teniendo problemas, rea un caso de soporte.
Información relacionada
SVL_COMPILE