Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Annuler une requête

Mode de mise au point
Annuler une requête - 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.

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.

Si vous exécutez une requête trop longue ou consommant trop de ressources, annulez-la. Par exemple, vous créez une liste de vendeurs de billets comprenant le nom du vendeur et la quantité de billets vendus. La requête suivante sélectionne les données des tables SALES et USERS, et joint les deux tables en associant SELLERID et USERID dans la clause WHERE.

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users WHERE sales.sellerid = users.userid GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

Le résultat ressemble à ce qui suit.

sellerid | firstname | lastname | sum ----------+-----------+----------+------ 48950 | Nayda | Hood | 184 19123 | Scott | Simmons | 164 20029 | Drew | Mcguire | 164 36791 | Emerson | Delacruz | 160 13567 | Imani | Adams | 156 9697 | Dorian | Ray | 156 41579 | Harrison | Durham | 156 15591 | Phyllis | Clay | 152 3008 | Lucas | Stanley | 148 44956 | Rachel |Villarreal| 148
Note

Il s’agit d’une requête complexe. Pour ce didacticiel, vous n’avez pas à vous préoccuper de la façon dont la requête est construite.

La requête précédente s’exécute en quelques secondes et retourne 2 102 lignes.

Supposons vous oubliez de placer la clause WHERE.

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

L’ensemble de résultats contient le nombre de toutes les lignes de la table SALES multiplié par le nombre de toutes les lignes de la table USERS (49989 * 3766). Cette jointure est appelée jointure cartésienne et n’est pas recommandée. Le résultat est supérieur à 188 millions de lignes et son exécution prend beaucoup de temps.

Pour annuler une requête en cours, utilisez la commande CANCEL avec l'ID de session de la requête. Avec l'éditeur de requêtes Amazon Redshift v2, vous pouvez annuler une requête en cliquant sur le bouton Annuler pendant que la requête est en cours d'exécution.

Pour trouver l'ID de session, démarrez une nouvelle session et interrogez la table STV_RECENTS, comme indiqué à l'étape précédente. L’exemple suivant montre comment vous pouvez rendre les résultats plus lisibles. Pour ce faire, utilisez la fonction TRIM pour couper les espaces de fin de ligne et n’afficher que les 20 premiers caractères de la chaîne de requête.

Pour déterminer l'ID de session d'une requête en cours d'exécution, exécutez l'instruction SELECT suivante.

SELECT user_id, session_id, start_time, query_text FROM sys_query_history WHERE status='running';

Le résultat ressemble à ce qui suit.

user_id | session_id | start_time | query_text ---------+---------------+----------------------------+---------------------------------------------------------------- 100 | 1073791534 | 2024-03-19 22:26:21.205739 | SELECT user_id, session_id, start_time, query_text FROM ...

Pour annuler la requête avec l'ID de session1073791534, exécutez la commande suivante.

CANCEL 1073791534;
Note

La commande CANCEL n’arrête pas une transaction. Pour arrêter ou restaurer une transaction, utilisez la commande ABORT ou ROLLBACK. Pour annuler une requête associée à une transaction, annulez d’abord la requête, puis arrêtez la transaction.

Si la requête que vous avez annulée est associée à une transaction, utilisez la commande ABORT ou ROLLBACK. pour annuler la transaction et ignorer toutes les modifications apportées aux données :

ABORT;

Sauf si vous êtes connecté comme super-utilisateur, vous pouvez annuler uniquement vos propres requêtes. Un super-utilisateur peut annuler toutes les requêtes.

Si votre outil de requête ne prend pas en charge l’exécution simultanée de requêtes, démarrez une nouvelle séance pour annuler la requête.

Pour plus d'informations sur l'annulation d'une requête, consultez CANCEL dans le manuel Amazon Redshift Database Developer Guide.

Annuler une requête à l’aide de la file d’attente super-utilisateur

Si votre séance en cours a un trop grand nombre de requêtes s’exécutant en même temps, il se peut que vous ne soyez pas en mesure d’exécuter la commande CANCEL tant qu’une autre requête n’est pas terminée. Dans ce cas, exécutez la commande CANCEL en utilisant une autre file d’attente de requêtes de gestion de la charge de travail.

La gestion de la charge de travail vous permet d’exécuter les requêtes dans différentes files d’attente de afin que vous n’ayez pas besoin d’attendre qu’une autre requête se termine. Le gestionnaire de la charge de travail crée une file d’attente distincte, appelée file d’attente super-utilisateur, que vous pouvez utiliser à des fins de dépannage. Pour utiliser la file d’attente super-utilisateur, connectez-vous en tant que super-utilisateur et définissez le groupe de requêtes avec la valeur « superuser » à l’aide de la commande SET. Après l’exécution de vos commandes, réinitialisez le groupe de requêtes à l’aide de la commande RESET.

Pour annuler une requête à l'aide de la file d'attente des superutilisateurs, exécutez ces commandes.

SET query_group TO 'superuser'; CANCEL 1073791534; RESET query_group;
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.