Il tempo di pianificazione delle query in Amazon Redshift è maggiore del tempo di esecuzione e non so perché.
Breve descrizione
Le query con blocchi esclusivi su un carico di produzione possono aumentare il tempo di attesa del blocco. Questo aumento fa sì che il tempo di pianificazione delle query in Amazon Redshift sia molto più lungo del tempo effettivo di esecuzione. Controlla la metrica Analisi dell’esecuzione del carico di lavoro per verificare se è presente un improvviso aumento dei tempi di pianificazione delle query. L’aumento dei tempi è dovuto probabilmente a una transazione in attesa di blocco.
Risoluzione
Per rilevare una transazione in attesa di blocco, completa i seguenti passaggi:
-
Apri una nuova sessione per il primo blocco:
begin; lock table1;
-
Apri una seconda sessione che viene eseguita in parallelo, quindi esegui la seguente query:
select * from table1 limit 1000;
La query in questa seconda sessione invia una richiesta AccessSharedLock. Poiché la prima sessione ha già richiesto il blocco AccessExclusiveLock, questa seconda query deve attendere per accedere al blocco. Quindi, ExclusiveLock blocca tutte le altre operazioni su table1.
-
Controlla la metrica Analisi dell’esecuzione del carico di lavoro. Un improvviso aumento dei tempi di pianificazione della query può confermare che è presente una transazione in attesa di blocco.
-
(Facoltativo) Se esiste una transazione in attesa di blocco, termina manualmente la sessione per eliminare il blocco:
select pg_terminate_backend(PID);
Per ulteriori informazioni sulla verifica della presenza di blocchi, consulta Come posso rilevare e sbloccare i blocchi in Amazon Redshift?
Informazioni correlate
Analisi delle prestazioni dei carichi di lavoro
Pianificazione di query e flusso di lavoro di esecuzione