CANCEL - 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.

CANCEL

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

La CANCEL commande 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 ayant le CANCEL privilège d'annuler 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.

À la suite de certains événements internes, Amazon Redshift peut redémarrer une session active et en attribuer une nouvelle. PID Si cela PID a changé, le message d'erreur suivant peut s'afficher.

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

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

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 souhaitez annuler.

Tapez la commande suivante pour utiliser 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-le entre guillemets simples à la fin de la CANCEL commande :

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