PostgreSQL Indice De L'Analyse De L'Utilisation
Est-il un outil ou une méthode pour analyser Postgres, et de déterminer ce que l'absence d'index doit être créé, et ce qui les index inutilisés doivent être supprimés? J'ai un peu d'expérience de le faire avec le "profiler" outil pour SQLServer, mais je ne suis pas au courant d'un outil similaire inclus avec Postgres.
- Il en est ainsi. N'ai pas regardé ça de temps en temps. Mise à jour de mes accepté de répondre.
Vous devez vous connecter pour publier un commentaire.
J'aime pour trouver des index manquants:
Ce vérifie si il y a plus de séquence de scans de l'indice, puis les scans. Si la table est petite, elle est ignorée, car Postgres semble préférer la séquence d'analyses pour eux.
Requête ci-dessus fait apparaître l'absence d'index.
La prochaine étape serait de détecter des manque combiné index. Je suppose que ce n'est pas facile, mais faisable. Peut-être en analysant les requêtes lentes ... j'ai entendu pg_stat_statements pourrait aider...
SELECT relname, seq_scan-idx_scan AS too_much_seq, case when seq_scan-idx_scan>0 THEN 'Missing Index?' ELSE 'OK' END, pg_relation_size(relid::regclass) AS rel_size, seq_scan, idx_scan FROM pg_stat_all_tables WHERE schemaname='public' AND pg_relation_size(relid::regclass)>80000 ORDER BY too_much_seq DESC;
too_much_seq
est positif et important, vous devriez être concernés.Consulter les statistiques.
pg_stat_user_tables
etpg_stat_user_indexes
sont ceux pour commencer.Voir "Le Collecteur Des Statistiques".
Sur la déterminer l'absence d'index approche....Nope. Mais il y a certains plans pour rendre cela plus facile à l'avenir de presse, comme des pseudo-indices et lisible à la machine EXPLIQUER.
Actuellement, vous aurez besoin de
EXPLAIN ANALYZE
pauvres de l'exécution des requêtes manuellement, puis déterminer le meilleur itinéraire. Certains analyseurs de log comme pgFouine peut aider à déterminer les requêtes.Aussi loin qu'un index inutilisé, vous pouvez utiliser quelque chose comme ce qui suit pour vous aider à les identifier:
Cela aidera à identifier les tuples lire, numérisé par les cheveux.
Autre nouvelle intéressante outil pour l'analyse de PostgreSQL est PgHero. Il est plus axé sur l'optimisation de la base de données et fait de nombreuses analyses et suggestions.
Il y a plusieurs liens vers des scripts qui vous aidera à trouver des index inutilisés à la PostgreSQL wiki. La technique de base est de regarder
pg_stat_user_indexes
et recherchez ceux oùidx_scan
, le nombre de fois que cet indice a été utilisé pour répondre à des requêtes, est égal à zéro, ou au moins très faible. Si la demande a été modifiée et un autrefois utilisé l'indice n'est probablement pas maintenant, parfois, vous avez à courirpg_stat_reset()
pour obtenir toutes les statistiques à 0, puis recueillir de nouvelles données; vous pouvez enregistrer les valeurs actuelles de tout et de calculer un delta au lieu de comprendre cela.Il n'y a pas de bons outils pour suggérer l'absence d'index. Une approche consiste à connecter les requêtes que vous êtes en cours d'exécution et d'analyser ceux qui prennent du temps à s'exécuter à l'aide d'une requête journal de l'outil d'analyse comme pgFouine ou pqa. Voir "La Journalisation Difficile Requêtes" pour plus d'info.
L'autre approche est de regarder
pg_stat_user_tables
et de regarder pour les tables qui ont un grand nombre d'analyses séquentielles contre eux, oùseq_tup_fetch
est grande. Lorsqu'un index est utilisé leidx_fetch_tup
nombre est augmenté à la place. Qui peut indice pour vous dans quand un tableau n'est pas indexé assez bien pour répondre à des requêtes.Effectivement déterminer les colonnes à l'indice, puis sur? Qui habituellement conduit à la requête de l'analyse du journal des trucs encore.
Vous pouvez utiliser la requête ci-dessous pour trouver l'Indice de l'utilisation et de la taille de l'Index:
Référence est prise à partir de ce blog.
PoWA semble être un outil intéressant pour PostgreSQL 9.4+. Il recueille des statistiques, visualise, et suggère des indices. Il utilise le
pg_stat_statements
extension.Il peut être trouvé en utilisant la requête suivante dans postgres console
Pour Plus De Détails https://www.postgresql.org/docs/current/monitoring-stats.html
Cela devrait vous aider: Travaux Pratiques Analyse De La Demande De