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.
IPC : ProcArrayGroupUpdate
L'IPC:ProcArrayGroupUpdateévénement se produit lorsqu'une session attend que le chef de groupe mette à jour le statut de la transaction à la fin de cette opération. Alors que PostgreSQL associe généralement les événements d'attente de type IPC aux opérations de requêtes parallèles, cet événement d'attente particulier n'est pas spécifique aux requêtes parallèles.
Rubriques
Versions de moteur prises en charge
Ces informations sur les événements d’attente sont prises en charge pour toutes les versions de RDS pour PostgreSQL.
Contexte
Comprendre le tableau de processus — Le tableau de processus (proc) est une structure de mémoire partagée dans PostgreSQL. Il contient des informations sur tous les processus en cours, y compris les détails des transactions. Au cours de la fin de la transaction (COMMITouROLLBACK), il ProcArray doit être mis à jour pour refléter le changement et effacer le TransactionID du tableau. La session qui tente de terminer sa transaction doit acquérir un verrou exclusif sur le ProcArray. Cela empêche d'autres processus d'obtenir des verrous partagés ou exclusifs sur celui-ci.
Mécanisme de mise à jour de groupe — Lors de l'exécution d'un COMMIT ou d'un ROLLBACK, si un processus principal ne parvient pas à obtenir un ProcArrayLock code en mode exclusif, il met à jour un champ spécial appelé. ProcArrayGroupMember Cela ajoute la transaction à la liste des sessions qui ont l'intention de se terminer. Ce processus principal est ensuite mis en veille et le temps qu'il passe en veille est instrumenté comme événement d' ProcArrayGroupUpdate attente. Le premier processus du ProcArray with procArrayGroup Member, appelé processus leader, acquiert ProcArrayLock le mode exclusif. Il efface ensuite la liste des processus en attente d'effacement de l'identifiant de transaction du groupe. Une fois cette opération terminée, le leader libère ProcArrayLock puis réveille tous les processus de cette liste, les informant que leur transaction est terminée.
Causes probables de l’augmentation du nombre d’événements d’attente
Plus le nombre de processus en cours d'exécution est élevé, plus un leader conservera longtemps un procArrayLock mode exclusif. Par conséquent, plus le nombre de transactions d'écriture aboutit à un scénario de mise à jour de groupe, ce qui entraîne une accumulation potentielle de processus en attente de l'événement d'ProcArrayGroupUpdateattente. Dans la vue SQL principale de Database Insights, vous verrez que COMMIT est l'instruction présentant la majeure partie de cet événement d'attente. Cela est normal, mais cela nécessitera une étude plus approfondie du code SQL d'écriture spécifique en cours d'exécution afin de déterminer les mesures appropriées à prendre.
Actions
Nous vous recommandons différentes actions en fonction des causes de votre événement d’attente. Identifiez les IPC:ProcArrayGroupUpdate événements à l'aide d'Amazon RDS Performance Insights ou en interrogeant la vue système de PostgreSQL. pg_stat_activity
Rubriques
Surveillance des opérations de validation et d'annulation des transactions
Surveillez les validations et les annulations — L'augmentation du nombre de validations et de annulations peut entraîner une pression accrue sur le. ProcArray Par exemple, si une instruction SQL commence à échouer en raison d'une augmentation du nombre de violations de clés dupliquées, vous pouvez assister à une augmentation des annulations, ce qui peut accroître les ProcArray contentions et le surpeuplement des tables.
Amazon RDS Database Insights fournit les xact_commit métriques PostgreSQL et indique le nombre de validations xact_rollback et de rollbacks par seconde.
Réduire la simultanéité
Transactions par lots — Dans la mesure du possible, opérations groupées en transactions uniques afin de réduire les commit/rollback opérations.
Limiter la simultanéité — Réduisez le nombre de transactions actives simultanément afin d'atténuer les conflits liés au verrouillage sur le. ProcArray Bien que cela nécessite quelques tests, la réduction du nombre total de connexions simultanées peut réduire les conflits et maintenir le débit.
Mise en œuvre du regroupement de connexions
Solutions de regroupement de connexions : utilisez le regroupement de connexions pour gérer efficacement les connexions aux bases de données, en réduisant le nombre total de backends et donc la charge de travail sur le ProcArray. Bien que cela nécessite quelques tests, la réduction du nombre total de connexions simultanées peut réduire les conflits et maintenir le débit.
Réduisez les tempêtes de connexion — De même, une tendance à créer et à terminer fréquemment des connexions entraîne une pression supplémentaire sur le ProcArray. En réduisant ce schéma, la contention globale est réduite.
Utilisation d'un stockage plus rapide
Volume de journal dédié — Si l'événement d'IPC:ProcArrayGroupUpdateattente s'accompagne d'événements d'IO:WALWriteattente élevés, la configuration d'un volume de journal dédié peut réduire le goulot d'étranglement lors de l'écriture sur WAL. Cela améliore à son tour les performances des validations.
Pour plus d'informations, consultez la section Volume de journal dédié.