LWLock:pg_stat_statements - Amazon Aurora

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.

LWLock:pg_stat_statements

L'événement d' LWLockattente :pg_stat_statements se produit lorsque l'extension verrouille de manière exclusive la pg_stat_statements table de hachage qui suit les instructions SQL. Cela se produit dans les scénarios suivants :

  • Lorsque le nombre d'instructions suivies atteint la valeur de pg_stat_statements.max paramètre configurée et qu'il est nécessaire de faire de la place pour d'autres entrées, l'extension effectue un tri sur le nombre d'appels, supprime les 5 % des instructions les moins exécutées et remplit à nouveau le hachage avec les entrées restantes.

  • When pg_stat_statements effectue une garbage collection opération sur le pgss_query_texts.stat fichier sur le disque et réécrit le fichier.

Versions de moteur prises en charge

Ces informations sur les événements d'attente sont prises en charge pour toutes les versions de .

Contexte

Comprendre l'extension pg_stat_statements — L'extension pg_stat_statements suit les statistiques d'exécution des instructions SQL dans une table de hachage. L'extension suit les instructions SQL jusqu'à la limite définie par le pg_stat_statements.max paramètre. Ce paramètre détermine le nombre maximum d'instructions pouvant être suivies, ce qui correspond au nombre maximum de lignes dans la vue pg_stat_statements.

Persistance des statistiques des instructions : l'extension conserve les statistiques des instructions lors des redémarrages de l'instance en :

  • Écrire des données dans un fichier nommé pg_stat_statements.stat

  • Utilisation du paramètre pg_stat_statements.save pour contrôler le comportement de persistance

Lorsque pg_stat_statements.save est défini sur :

  • activé (par défaut) : les statistiques sont enregistrées à l'arrêt et rechargées au démarrage du serveur

  • off : les statistiques ne sont ni enregistrées à l'arrêt ni rechargées au démarrage du serveur

Stockage du texte des requêtes : l'extension stocke le texte des requêtes suivies dans un fichier nommépgss_query_texts.stat. Ce fichier peut atteindre le double de la taille moyenne de toutes les instructions SQL suivies avant la collecte des déchets. L'extension nécessite un verrouillage exclusif de la table de hachage pendant les opérations de nettoyage et de pgss_query_texts.stat réécriture du fichier.

Processus de désallocation des relevés — Lorsque le nombre de relevés suivis atteint la pg_stat_statements.max limite et que de nouveaux relevés doivent être suivis, l'extension :

  • Prend un verrou exclusif (:pg_stat_statementsLWLock) sur la table de hachage.

  • Charge les données existantes dans la mémoire locale.

  • Effectue un tri rapide en fonction du nombre d'appels.

  • Supprime les instructions les moins appelées (5 % inférieurs).

  • Reremplit la table de hachage avec les entrées restantes.

Surveillance de la désallocation des instructions — Dans PostgreSQL 14 et versions ultérieures, vous pouvez surveiller la désallocation des instructions à l'aide de la vue pg_stat_statements_info. Cette vue inclut une colonne dealloc qui indique le nombre de fois où des instructions ont été désallouées pour faire de la place à de nouvelles.

Si la désallocation des instructions se produit fréquemment, cela entraînera une collecte plus fréquente du pgss_query_texts.stat fichier sur le disque.

Causes probables de l'allongement des temps d'attente

Les causes typiques de l'augmentation des temps d'LWLock:pg_stat_statementsattente sont les suivantes :

  • Augmentation du nombre de requêtes uniques utilisées par l'application.

  • La valeur du pg_stat_statements.max paramètre est faible par rapport au nombre de requêtes uniques utilisées.

Actions

Nous vous recommandons différentes actions en fonction des causes de votre événement d'attente. Vous pouvez identifier les LWLock:pg_stat_statements événements à l'aide d'Amazon RDS Performance Insights ou en interrogeant la vue. pg_stat_activity

Ajustez les pg_stat_statements paramètres suivants pour contrôler le comportement de suivi et réduire:les instructions LWLock pg_stat_ attendent les événements.

Désactiver le paramètre pg_stat_statements.track

Si l'événement:pg_stat_statements LWLock wait a un impact négatif sur les performances de la base de données et qu'une solution rapide est requise avant de poursuivre l'analyse de la vue pg_stat_statements afin d'identifier la cause première, le paramètre pg_stat_statements.track peut être désactivé en le définissant sur. none Cela désactivera la collecte des statistiques des relevés.

Augmenter le paramètre pg_stat_statements.max

Pour réduire la désallocation et minimiser la collecte de déchets du pgss_query_texts.stat fichier sur le disque, augmentez la valeur du pg_stat_statements.max paramètre. La valeur par défaut est 5,000.

Note

Le pg_stat_statements.max paramètre est statique. Vous devez redémarrer votre instance de base de données pour appliquer les modifications apportées à ce paramètre.

Désactiver le paramètre pg_stat_statements.track_utility

Vous pouvez analyser la vue pg_stat_statements pour déterminer les commandes utilitaires consommant le plus de ressources suivies. pg_stat_statements

Le pg_stat_statements.track_utility paramètre contrôle si le module suit les commandes utilitaires, qui incluent toutes les commandes sauf SELECT, INSERT, UPDATE, DELETE et MERGE. Par défaut, ce paramètre est défini sur on.

Par exemple, lorsque votre application utilise de nombreuses requêtes de point de sauvegarde, qui sont intrinsèquement uniques, cela peut augmenter la désallocation des instructions. Pour résoudre ce problème, vous pouvez désactiver le pg_stat_statements.track_utility paramètre pour arrêter le suivi des requêtes pg_stat_statements de point de sauvegarde.

Note

Le pg_stat_statements.track_utility paramètre est un paramètre dynamique. Vous pouvez modifier sa valeur sans redémarrer votre instance de base de données.

Exemple de requêtes de point de sauvegarde uniques dans pg_stat_statements
query | queryid -------------------------------------------------+--------------------- SAVEPOINT JDBC_SAVEPOINT_495701 | -7249565344517699703 SAVEPOINT JDBC_SAVEPOINT_1320 | -1572997038849006629 SAVEPOINT JDBC_SAVEPOINT_26739 | 54791337410474486 SAVEPOINT JDBC_SAVEPOINT_1294466 | 8170064357463507593 ROLLBACK TO SAVEPOINT JDBC_SAVEPOINT_65016 | -33608214779996400 SAVEPOINT JDBC_SAVEPOINT_14185 | -2175035613806809562 SAVEPOINT JDBC_SAVEPOINT_45837 | -6201592986750645383 SAVEPOINT JDBC_SAVEPOINT_1324 | 6388797791882029332

PostgreSQL 17 introduit plusieurs améliorations pour le suivi des commandes utilitaires :

  • Les noms des points de sauvegarde sont désormais affichés sous forme de constantes.

  • La transaction globale IDs (GIDs) des commandes de validation en deux phases est désormais affichée sous forme de constantes.

  • Les noms des instructions DEALLOCATE sont affichés sous forme de constantes.

  • Les paramètres CALL sont désormais affichés sous forme de constantes.