EXPLIQUEZ avec des suggestions d'index

10

Existe-t-il un logiciel (de préférence open source) capable d'analyser un EXPLAIN PostgreSQL et de recommander les indices nécessaires pour accélérer la requête?

Adam Matan
la source

Réponses:

6

Je l'ai littéralement trouvé il y a quelques minutes: http://explain.depesz.com/ . Vous collez les résultats de votre EXPLAIN ANALYZE et il vous montre où il peut y avoir des problèmes (il est même codé par couleur).

De la section d'aide ...

explique.depesz.com est un outil pour trouver la cause réelle des requêtes lentes. Généralement, on utilise la requête EXPLAIN ANALYZE; et lire la sortie. Le problème est que toutes les parties de la sortie ne sont pas facilement compréhensibles par quiconque, et il n'est pas toujours évident de savoir si le nœud qui s'exécute en 17,3 ms est plus rapide ou plus lent que celui qui s'exécute en 100 ms - étant donné que la première est exécutée 7 fois. Pour utiliser le site, allez simplement sur sa première page et collez-y expliquer analyser la sortie de votre psql. Cette sortie pourrait ressembler à ceci. Après le téléchargement, vous serez redirigé vers une page qui montre analysé, et bien (enfin, au moins sympa pour moi :) colorisé pour mettre l'accent sur les parties importantes. Cela pourrait ressembler à ça. Note latérale: l'URL pour la sortie colorisée est persistante, vous pouvez donc simplement l'utiliser pour le montrer aux autres - par exemple - pour ces gentils gars sur le canal irc #postgresql sur freenode. Ce graphique utilise 4 couleurs pour marquer les choses importantes: fond blanc - tout est fin fond jaune - le nœud donné est inquiétant fond marron - le nœud donné est plus inquiétant fond rouge - le nœud donné est très inquiétant Quelle couleur est utilisée, est choisie en fonction du mode vous utiliserez: "Exclusive", "Inclusive" ou "Rows X".

Philip Southam
la source
1

Je ne connais aucun outil pour Postgres qui le fasse de manière algorithmique, et à mon avis, le cerveau humain (et souvent un peu d'expérimentation dans un environnement de développement) est vraiment le seul outil approprié ici. De nombreux facteurs sont impliqués, notamment le fait que le planificateur de requêtes pense ou non que votre index vaut la peine d'être utilisé - quelque chose qui est déterminé par la façon dont votre installation a réglé les paramètres du planificateur de requêtes et la taille / les statistiques sur la table impliquée ( s).

La meilleure recommandation que je puisse faire est de faire un EXPLAIN ANALYZE(le ANALYZEest important - cela vous donnera des temps d'exécution des requêtes et des sous-plans), regardez les résultats vous-même et attaquez le plus grand nombre que vous voyez en premier. Vous pourriez probablement écrire un analyseur pour briser la sortie EXPLAIN (en particulier dans la version 9.0 avec sortie JSON), mais je ne connais personne qui ait déjà résolu ce problème (c'est essentiellement ce que font les optimiseurs pour MS-SQL ...)

voretaq7
la source
0

Rien de productif, mais pour les curieux, il y a / était un projet de recherche pour mettre en œuvre quelque chose comme ça. Recherchez "PostgreSQL index advisor".

Peter Eisentraut
la source