Ich muss wissen, wie lange eine bestimmte Abfrage ausgeführt wird (ich erwarte eine sehr lange Laufzeit). Um dies zu tun, habe ich beschlossen, eine EXPLAIN ANALYZE
auf die Abfrage mit nur einem Teil des gesamten Datensatzes ausführen und von dort extrapolieren. Aber ich habe ein Problem; Die Abfrage dauert mehr als zwei Stunden, bevor die Verbindung abläuft, was zu keinen Ergebnissen führt. Ich möchte das Timeout nicht erhöhen, weil ich nicht weiß, wie lange es dauern könnte (es liegt zwischen zwei Stunden und zwei Tagen).Postgresql Ausgabe EXPLAIN ANALYSE in Datei
Gibt es eine Möglichkeit, den SQL-Server zu veranlassen, die Daten in eine Datei auf dem Dateisystem des Servers auszugeben, so dass ich mich nicht um Timeouts kümmern muss? Ich habe folgendes versucht:
Copy (
EXPLAIN ANALYZE INSERT INTO <table>
<Long complex query here>
) To '/tmp/analyze.csv' With CSV;
aber ich erhalte eine Fehlermeldung bei EXPLAIN
.
Für das Protokoll, ja, ich will ANALYZE
weil
- es um die Datenmenge tun, verringert später zu verarbeiten und
- es gibt eine tatsächliche Zeitschätzung.
Danke! Das scheint genau das zu tun, was ich brauchte. Ich möchte, dass die Abfrage tatsächlich ausgeführt wird, da es später weniger bedeutet. Außerdem weiß ich, dass die Abfrage nach Ablauf der Verbindung weiterhin ausgeführt wird, sodass ich mir keine Sorgen darüber mache, dass die Erklärung abgebrochen wird. Das Problem war, dass es zu Ende ging und die Verbindung geschlossen wurde, so dass ich das Ergebnis nie sah. Wenn ich in eine Datei schreibe, kann ich später nachsehen. – user2752635