Comment plonger dans l'optimiseur de PostgreSQL et suivre chaque étape nécessaire pour optimiser la requête?

8

Tout comme la structure MEMO dans SQL Server qui est une sorte de "trace papier" des étapes que l'optimiseur prend pour optimiser la requête. PostgreSQL a-t-il la même structure qui enregistre les étapes de l'optimiseur?

zli89
la source

Réponses:

3

Non, il n'y a pas de structure ou de fonction d'audit / de rapport d'optimiseur détaillée.

Votre meilleur outil est «gdb». Contrairement à MS SQL Server, PostgreSQL est open source; vous pouvez simplement construire avec les symboles de débogage activés, attacher un débogueur et suivre exactement ce qu'il fait.

Cela ne veut pas dire que c'est facile, bien sûr. Un ensemble de points d'arrêt et de macros gdb pour produire une trace de ce que font le planificateur / optimiseur serait très bien. Je ne connais pas un tel outil à ce stade.

gdbLes points de trace, ou perfpoints de trace de l'espace utilisateur, vous seront très utiles.

Vous pouvez également activer la journalisation détaillée du débogage et certains des paramètres de trace, postgresql.confpuis examiner les fichiers journaux détaillés résultants.

Il y a de la documentation (à laquelle j'ai ajouté des informations sur le vidage des arborescences de plan, etc.) dans la FAQ du développeur PostgreSQL: https://wiki.postgresql.org/wiki/Developer_FAQ . Cela peut être utile. Vous devriez également lire les principaux documents destinés aux développeurs.

Craig Ringer
la source