El tiempo de planificación de mi consulta en Amazon Redshift supera el tiempo de ejecución y no tengo claro por qué.
Breve descripción
Las consultas con bloqueos exclusivos en una carga de producción pueden aumentar el tiempo de espera de los bloqueos. Este aumento hace que el tiempo de planificación de las consultas en Amazon Redshift sea mucho mayor que el tiempo de ejecución real. Consulte la métrica Desglose de la ejecución de cargas de trabajo para ver si hay un aumento repentino en el tiempo de planificación de las consultas. Es probable que el aumento del tiempo se deba a una transacción a la espera de un bloqueo.
Solución
Para detectar una transacción a la espera de un bloqueo, siga estos pasos:
-
Abra una nueva sesión para el primer bloqueo:
begin; lock table1;
-
Abra una segunda sesión que se ejecute en paralelo y, a continuación, ejecute la siguiente consulta:
select * from table1 limit 1000;
La consulta de esta segunda sesión envía una solicitud AccessSharedLock. Como la primera sesión ya reclamó AccessExclusiveLock, esta segunda consulta debe esperar para acceder al bloqueo. A continuación, ExclusiveLock bloquea todas las demás operaciones de table1.
-
Compruebe las métricas Desglose de la ejecución de cargas de trabajo. Un pico repentino en el tiempo de planificación de las consultas puede confirmar que hay una transacción a la espera de un bloqueo.
-
(Opcional) Si existe una transacción a la espera de un bloqueo, termine la sesión manualmente para liberar el bloqueo:
select pg_terminate_backend(PID);
Para obtener más información sobre la liberación de bloqueos, consulte ¿Cómo puedo detectar y liberar bloqueos en Amazon Redshift?
Información relacionada
Análisis del rendimiento de las cargas de trabajo
Flujo de trabajo de planificación y ejecución de consultas