La requête se bloque - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

La requête se bloque

Votre requête peut se bloquer, ou cesser de répondre, pour les raisons suivantes. Nous vous suggérons les approches de résolution des problèmes suivantes.

La connexion à la base de données est abandonnée

Réduisez la taille de l’unité de transmission maximale (MTU). La taille de la MTU détermine la taille maximale, en octets, d’un paquet pouvant être transféré dans une trame Ethernet sur votre connexion réseau. Pour plus d’informations, consultez La connexion à la base de données est abandonnée dans le Guide de gestion Amazon Redshift.

La connexion à la base de données arrive à expiration

La connexion de votre client à la base de données semble se bloquer ou arriver à expiration lorsque vous exécutez de longues requêtes, par exemple une commande COPY. Dans ce cas, vous pouvez constater que la console Amazon Redshift affiche que la requête est terminée, mais que l’outil client lui-même semble toujours exécuter la requête. Les résultats de la requête peuvent être manquants ou incomplets en fonction selon le moment où la connexion s’est arrêtée. Cela se produit lorsque les connexions inactives sont arrêtées par un composant réseau intermédiaire. Pour plus d’informations, consultez Problème de délai d’expiration du pare-feu dans le Guide de gestion Amazon Redshift.

Une erreur de saturation de la mémoire côté client se produit avec ODBC

Si votre application cliente utilise une connexion ODBC et que votre requête crée un ensemble de résultats trop volumineux pour contenir en mémoire, vous pouvez diffuser l’ensemble de résultats sur votre application cliente à l’aide d’un curseur. Pour plus d’informations, consultez DECLARE et Considérations relatives aux performances lors de l’utilisation de curseurs.

Une erreur de saturation de la mémoire côté client se produit avec JDBC

Lorsque vous essayez de récupérer des jeux de résultats volumineux via une connexion JDBC, il se peut que vous rencontriez des erreurs de saturation de la mémoire côté client. Pour plus d’informations, consultez Définition du paramètre de taille d’extraction JDBC.

Il existe un blocage potentiel

En cas de blocage potentiel, essayez ce qui suit :

  • Affichez les tables système STV_LOCKS et STL_TR_CONFLICT pour rechercher les conflits impliquant des mises à jour de plusieurs tables.

  • Utilisez la fonction PG_CANCEL_BACKEND pour annuler une ou plusieurs requêtes conflictuelles.

  • Utilisez la fonction PG_TERMINATE_BACKEND pour mettre fin à une session, ce qui oblige toutes les transactions en cours d’exécution dans la session terminée à libérer tous les verrous et à restaurer la transaction.

  • Planifiez les opérations d’écriture simultanées avec soin. Pour plus d’informations, consultez Gestion des opérations d’écriture simultanées.