ANNULER - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

ANNULER

Annule une requête de base de données qui s’exécute simultanément.

La commande CANCEL nécessite l'ID de processus ou l'ID de session de la requête en cours d'exécution et affiche un message de confirmation pour vérifier que la requête a été annulée.

Privilèges requis

Les privilèges suivants sont requis pour CANCEL :

  • Super-utilisateur annulant sa propre requête

  • Super-utilisateur annulant la requête d’un utilisateur

  • Utilisateurs disposant du privilège CANCEL et annulant la requête d’un utilisateur

  • Utilisateur annulant sa propre requête

Syntaxe

CANCEL process_id [ 'message' ]

Paramètres

process_id

Pour annuler une requête exécutée dans un cluster Amazon Redshift, utilisez le pid (ID de STV_RECENTS processus) correspondant à la requête que vous souhaitez annuler.

Pour annuler une requête exécutée dans un groupe de travail Amazon Redshift Serverless, utilisez le formulaire session_id correspondant à la requête SYS_QUERY_HISTORY que vous souhaitez annuler.

message

Message de confirmation facultatif qui s’affiche lorsque l’annulation de la requête est terminée. Si vous ne spécifiez pas un message, Amazon Redshift affiche le message par défaut en tant que vérification. Vous devez placer le message entre guillemets simples.

Notes d’utilisation

Vous ne pouvez pas annuler une requête en spécifiant un ID de requête ; vous devez spécifier l'ID de processus (PID) ou l'ID de session de la requête. Vous pouvez uniquement annuler les requêtes exécutées simultanément par votre utilisateur. Les super-utilisateurs peuvent annuler toutes les requêtes.

Si les requêtes de plusieurs séances maintiennent des verrous sur la même table, vous pouvez utiliser la fonction PG_TERMINATE_BACKEND pour mettre fin à l’une des séances. Cela oblige toutes les transactions en cours d’exécution dans la séance terminée à libérer tous les verrous et à restaurer la transaction. Interrogez la table système STV_LOCKS pour afficher les verrous actuellement détenus.

Suite à certains événements internes, Amazon Redshift peut redémarrer une séance active et attribuer un nouveau PID. Si le PID a été modifié, vous pourriez recevoir le message d’erreur suivant :

Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.

Pour trouver le nouveau PID, interrogez la table système STL_RESTARTED_SESSIONS et filtrez sur la colonne oldpid.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

Exemples

Pour annuler une requête en cours d'exécution dans un cluster Amazon Redshift, récupérez d'abord l'ID de processus de la requête que vous souhaitez annuler. Pour déterminer le processus IDs de toutes les requêtes en cours d'exécution, tapez la commande suivante :

select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);

Vérifiez le texte de la requête pour déterminer quel identifiant de processus (PID) correspond à la requête que vous voulez annuler.

Tapez la commande suivante pour utiliser le PID 802 afin d’annuler cette requête :

cancel 802;

La séance au cours de laquelle la requête était en cours d’exécution affiche le message suivant :

ERROR: Query (168) cancelled on user's request

168 est l’ID de la requête (pas l’ID du processus utilisé pour annuler la requête).

Sinon, vous pouvez spécifier un message de confirmation personnalisé à afficher à la place du message par défaut. Pour spécifier un message personnalisé, incluez votre message entre guillemets simples à la fin de la commande CANCEL :

cancel 802 'Long-running query';

La séance au cours de laquelle la requête était en cours d’exécution affiche le message suivant :

ERROR: Long-running query