2

Ich bin ein Neuling in PostgreSQL. Bitte helfen Sie mir das herauszufinden.Holen Sie sich Details ausgeführte Abfrage in PostgreSQL

Ich habe eine Tabelle

company (
    id bigint primary key, 
    name text, 
    age integer, 
    address character(50), 
    salary real, 
    gender character(1)) 

dann mache ich einfache Abfrage:

select * from company where address='texas' and salary=10000 
select * from company where address='texas' and salary=15000 
select * from company where address='houston' and salary=10000 
select * from company where address='texas' and salary=85000 
select * from company where address='norway' and salary=100 

wie i Details der ausgeführten Abfrage erhalten können, zB die Abfrage, variable Eingangs WHERE und die gesamte Ausführung Zeit. So kann ich jede ausgeführte Abfrage vergleichen, um zu wissen, welche Art von Eingabe lange läuft.

Danke,

+0

Es ist nicht so einfach, es zu Setup aber Blick auf die [pg_stat_statements] (https://www.postgresql.org/docs/current/static/pgstatstatements.html) Modul. – Abelisto

+0

danke @Abelisto, ich habe pg_stat_statement verwendet, aber mein Mentor sagte ohne dieses Modul. Vielleicht gibt es einen anderen Weg? Vielen Dank –

+0

Ok, versuchen Sie [Error Reporting and Logging] (https://www.postgresql.org/docs/current/static/runtime-config-logging.html), schauen Sie sich die Parameter 'log_statement' an (Sets die Art der protokollierten Anweisungen) 'log_duration' (protokolliert die Dauer jeder abgeschlossenen SQL-Anweisung),' log_min_duration_statement' (Legt die Mindestausführungszeit fest, über der Anweisungen protokolliert werden) und so weiter. – Abelisto

Antwort

1

Als ich die Frage lesen es klingt wie Sie für den Abfrageausführungsplan und Ausführungsdetails suchen, richtig?

Wenn ja, möchten Sie sich die Dokumente [1] für EXPLAIN ansehen und sich mit ihnen vertraut machen.

explain ohne Optionen bietet den Abfrageplan. Es führt die Abfrage nicht tatsächlich aus.

explain analyze geben Sie gegenüber der tatsächlichen Timings erwartet (man beachte sie nicht Ausgangsdaten nicht detoast aber dies ist in der Regel kein Problem dar. Es läuft die Abfrage tatsächlich, wie es wird jedes Mal, wenn ein in Ihren Optionen analysieren.

explain analyze verbose gibt Ihnen zusätzliche Informationen.

Gelegentlich spezifizieren Sie Statistiken puffern wollen hilfreich sein kann, aber das ist eine seltene Ecke Fall. Beginnen Sie mit diesen drei.

beachten Sie auch, Sie PostgreSQL konfigurieren können langsame Abfragen und dies beinhaltet Parameter zur Anmeldung oder Eingabe. Der Kamm In der Regel sind diese beiden Probleme wichtig, um diese Probleme zu lösen.

[1] https://www.postgresql.org/docs/9.3/static/sql-explain.html

+0

Vielen Dank .. Ich habe über EXPLAIN gelesen. Mit EXPLAIN kann ich die Planung meiner Anfrage sehen. Aber es ist nicht mein Problem. Es tut mir leid, wenn meine Frage nicht klar ist. Nachdem ich einfach wie der Beitrag oben auswählen, wie bekomme ich das Detail der einzelnen Transaktion, wie Abfrage, Transaktionszeit ohne pg_stat_statement ?? Danke - –

+0

Es gibt keine echte Möglichkeit, das in PostgreSQL zu tun. Es klingt für mich so, als hätten Sie Probleme mit einigen langsamen Abfragen. Die beste Option besteht darin, langsame Abfragen oberhalb eines bestimmten Schwellenwerts zu protokollieren und dann mithilfe von explain herauszufinden, warum diese langsam sind. Ich nehme an, dass Sie clientseitige Zeit verfolgen und eine clientseitige Protokollierung durchführen können. –

+0

gut dann, vielen Dank für Ihre Erklärung. :) –

Verwandte Themen