Pourquoi le délai de planification de mes requêtes est-il si long dans Amazon Redshift ?

Date de la dernière mise à jour : 16/04/2020

Le délai de planification de mes requêtes dans Amazon Redshift est beaucoup plus long que le délai d'exécution réel. Pourquoi ?

Brève description

S'il existe des requêtes avec des verrous exclusifs sur une charge de production, le temps d'attente de verrouillage peut augmenter. Par conséquent, le délai de planification de mes requêtes dans Amazon Redshift est beaucoup plus long que le délai d'exécution réel. Vérifiez la métrique Répartition de l'exécution de la charge de travail pour voir s'il y a une augmentation soudaine du délai de planification des requêtes. Cette augmentation du délai est probablement due à une transaction en attente d'un verrou.

Solution

Pour détecter une transaction en attente d'un verrou, procédez comme suit :

1.    Ouvrez une nouvelle session pour votre premier verrou :

begin; lock table1;

2.    Ouvrez une deuxième session qui s'exécute en parallèle :

select * from table1 limit 1000;

La requête de cette deuxième session envoie une demande AccessSharedLock. Cependant, la requête doit attendre AccessExclusiveLock, car la première session l'a déjà réclamée. La demande ExclusiveLock bloque ensuite toutes les autres opérations sur table1.

3.    Vérifiez vos métriques Répartition de l'exécution de la charge de travail. Si vous constatez un pic soudain du délai de planification des requêtes, cela confirme qu'une transaction attend un verrou.

4.    (Facultatif) Si une transaction est en attente d'un verrou, désactivez le verrou en résiliant manuellement la session :

select pg_terminate_backend(PID);

Pour plus d'informations sur la libération de verrous, consultez la section Comment puis-je détecter les verrous dans Amazon Redshift, et les désactiver ?


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?