SET extra_float_digits = 3 in postgresql
Immer, wenn ich starten Sie die Postgresql-DB-engine, habe ich fast 7-8 Abfragen, die im hintergrund ausgeführt SET extra_float_digits = 3
Ich bin nicht sicher, warum diese ausgeführt werden aller Zeiten. Ich weiß, dass die extra_float_digits variable stellt die Anzahl der angezeigten stellen für die floating-point-Werte in Postgresql, jedoch bin ich nicht sicher, warum diese Abfragen im hintergrund laufen, wenn ich starte die DB-engine.
Ich habe bereits die extra_float_digits = 3 in der config-Datei. Auch wenn ich den Kommentar, dass diese Abfragen immer noch im hintergrund laufen..
Hilfe brauchen..Danke
- Wenn eine Verbindung im Leerlauf ist, Postgres' session stats werden immer noch Bericht der zuletzt ausgeführten Anweisung. Sind Sie sicher, dass diese Abfragen ausgeführt?
- Nochmals überprüft, und ich sehe diese und andere Abfragen als idle.. was ist der Zweck dieser Abfrage? und gibt es eine query_timeout, die wir haben können, so dass diese Zeitüberschreitung?
- Die Abfrage ist nicht ausgestellt werden, Postgres, es ist die Anwendung, die Verbindung zu Postgres läuft, dass diese Aussagen.
- Die Sache ist die, dass ich zu viele Postgres-Prozesse im hintergrund laufen, wenn ich eine Anwendung ausführen.. gibt es eine Möglichkeit heraus zu finden, warum habe ich diese vielen Prozesse ?
- Es ist normal für client-Anwendungen ausführen, um eine Reihe von
SET
Befehle auf Start, um diverse Dinge konfigurieren, um Ihrem Geschmack. Sie nicht brauchen, um "time out" - diese Aussagen - wie gesagt, Sie läuft nicht mehr. - Die session-Statistiken sollte Ihnen sagen, die IP-Adresse, und (vielleicht) den Namen der Anwendung, der client-Prozess. Darüber hinaus, es gibt nicht viel können wir sagen von hier aus...
- By the way, was ist die Anwendung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Abfragen sind nicht wirklich läuft. Wie Nick sagt in den Kommentaren, wird die verbindungen im Ruhezustand.
pg_stat_activity
zeigt die Letzte Anweisung, die ausgeführt wird, wenn eine Abfrage im Leerlauf ist.Als für den anderen Teil: ich würde sagen, Sie sind mit PgJDBC.
SET extra_float_digits
sorgt dafür, dass PgJDBC nicht verlieren Präzision, wenn es bekommt floating-point-Werte aus der Datenbank. Es ist Teil der ersten Verbindung Gespräch. Es ist normal und man kann es ignorieren. Wenn Sie auf einem der letzten PgJDBC, senden Sie die zusätzlichen Verbindungs-parameterassumeMinServerVersion=9.0
und es wird Weg gehen.Also das was du da hast ist ein Haufen von neuen verbindungen im Leerlauf.
Blick in Ihre Anwendung /application server-Konfiguration. Ihre connection pool vermutlich keine vernünftigen Grenzen gesetzt.
Ich habe dieses problem mit Java und Postgresql.
Ich habe diese Aufgabe gelöst durch die Verwendung PGPoolingDataSource und Enge Verbindung.
Hier, wie ich aufgebaut habe, mein Klassen:
//Class Factory-Verbindung:
//Class userDAO - Klasse, um die Interaktion mit der Datenbank
Immer, wenn eine neue Verbindung hergestellt ist, postgres löst diese
extra_float_digits
Einstellung.Problem mit meiner Datenbank health-check-Modul.
in meine option können Sie am Ende dieser verbindungen mit einer pg-Befehl. Zum Beispiel:
WÄHLEN Sie pg_terminate_backend(t.pid)
FROM (SELECT pid
VON pg_stat_activity
WHERE state = 'idle' UND Abfrage like '%float%' UND state_change<(heute() - interval '1 hour')) AS t;