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 unegarbage collection
opération sur lepgss_query_texts.stat
fichier sur le disque et réécrit le fichier.
Rubriques
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_statements
attente 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.
Rubriques
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.