J'ai essayé de résilier une requête de longue durée dans Amazon Redshift, mais la requête continue de s'exécuter.
Brève description
Amazon Redshift ne peut pas résilier une requête dans les scénarios suivants :
- La requête est en train de renvoyer les résultats au client.
- Le processus de requête rencontre une erreur interne critique.
Même après avoir résilié la requête avec succès, celle-ci peut apparaître comme étant En cours d'exécution. Vous devez attendre la fin du processus d'annulation de la requête.
Résolution
Pour vérifier si la requête est en cours de renvoi des résultats au client, exécutez la requête suivante :
SELECT state FROM stv_wlm_query_state WHERE query = queryid
Remarque : Remplacez queryid par l'ID de votre requête.
Dans la sortie, vérifiez si la colonne d’état dans STV_WLM_QUERY_STATE est En cours de renvoi.
Pour résilier la requête, exécutez la commande PG_TERMINATE_BACKEND suivante :
SELECT PG_TERMINATE_BACKEND(PID);
Remarque : Remplacez PID par l'ID de processus ou l'ID de session.
Si la commande PG_TERMINATE_BACKEND ne parvient pas à résilier la requête, effectuez un redémarrage forcé dans la console Amazon Redshift.
Remarque : Un redémarrage forcé ferme toutes les connexions en cours. Vous ne pouvez pas redémarrer un cluster sans serveur.
Si vous utilisez Amazon Redshift sans serveur, vous devez créer un dossier de support. Dans le dossier de support, fournissez les informations suivantes :
- L'ID de la requête que vous souhaitez résilier
- Nom de votre cluster ou groupe de travail
- L'heure à laquelle le problème est survenu
- Mesures que vous avez prises pour résoudre le problème