Frage

Ist es möglich, eine Geschichte von Abfragen in Postgres gemacht zu bekommen? und wird es möglich sein, die Zeit, die für jede Abfrage nahm zu bekommen? Ich bin derzeit versucht, langsame Abfragen in der Anwendung zu identifizieren, arbeite ich an.

Ich bin mit Postgres 8.3.5

War es hilfreich?

Lösung

Es gibt keine Geschichte in der Datenbank selbst, wenn Sie psql verwenden können Sie „\ s“ Ihr Befehl Geschichte dort zu sehen.

Sie können durch das Setzen zukünftige Abfragen oder andere Arten von Operationen in die Log-Dateien log_statement in der Datei postgresql.conf. Was Sie wahrscheinlich stattdessen wollen, ist log_min_duration_statement , die, wenn Sie es auf 0 gesetzt werden alle Anfragen und deren Dauer in den Protokollen anmelden. Das kann hilfreich sein, wenn Sie Ihre Anwendungen live geht, wenn man das auf einen höheren Wert gesetzt werden Sie nur die lange laufende Abfragen sehen, die für die Optimierung hilfreich sein kann (Sie EXPLAIN ANALYZE ausführen können Sie auf den Abfragen finden es, herauszufinden, warum sie ‚re langsam).

Eine weitere praktische Sache in diesem Bereich ist zu wissen, dass, wenn Sie psql laufen und sagen, dass es „\ Timing“, wird es zeigen, wie lange jede Aussage danach nimmt. Also, wenn Sie eine SQL-Datei, die wie folgt aussieht:

\timing
select 1;

Sie können es mit den richtigen Flaggen laufen und jede Anweisung sehen verschachtelt mit, wie lange es dauerte. Hier ist, wie und was das Ergebnis aussieht wie:

$ psql -ef test.sql 
Timing is on.
select 1;
 ?column? 
----------
        1
(1 row)

Time: 1.196 ms

Das ist praktisch, weil Sie nicht Superuser zu sein Datenbank brauchen, es zu benutzen, anders als die Config-Datei zu ändern, und es ist einfacher zu benutzen, wenn Sie neue Codes sind die Entwicklung und wollen es testen.

Andere Tipps

Wenn Sie langsame Abfragen zu identifizieren, als die Methode ist die Verwendung log_min_duration_statement Einstellung (in postgresql.conf oder Satz pro-Datenbank mit ALTER DATABASE SET).

Wenn Sie die Daten protokolliert, können Sie dann verwenden grep oder einige spezialisierte Tools - wie pgFouine oder meine eigenen Analysator - die richtigen Dokumente fehlt, aber trotzdem -. läuft ganz gut

pgBadger ist eine weitere Option - auch hier aufgelistet: https://github.com/dhamaniasad/awesome -postgres # Dienstprogramme

Benötigt eine zusätzliche Einrichtung im Voraus die notwendigen Daten in den Postgres-Protokolle zu erfassen, obwohl die offizielle Website.

Zu Ihrer Information für diejenigen mit der UI Navicat :

Sie MÜSSEN Ihre Einstellungen festlegen, um eine Datei zu where nutzen, um die Geschichte zu speichern.

Wenn Sie dieses Feld leer ist Ihr Navicat leer.

PS: Ich habe keine Verbindung mit oder in Verbindung zu Navicat oder verbundenen Unternehmen. Nur auf der Suche nach Hilfe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top