Ich verwende PostgreSQL 8.3 + PostGIS 1.3 , um Geodaten auf Ubuntu 8.04 Hardy zu speichern .
Diese spezielle Version von PostGIS hat einen Fehler bei der Berechnung buffer()
von sehr komplexen Segmenten, der dazu führt, dass die Abfrage immer mehr Speicher beansprucht, bis der gesamte Computer hängen bleibt.
Ich suche nach einem PostgreSQL-Mechanismus, der Folgendes kann:
- Begrenzen Sie den Speicherverbrauch (und möglicherweise andere Ressourcen), die von einer bestimmten Abfrage verwendet werden.
- Beenden Sie automatisch Abfragen, deren Ausführungszeit einen bestimmten Schwellenwert überschreitet.
Irgendwelche Ideen?
performance
postgresql
Adam Matan
quelle
quelle
Antworten:
Um den Speicherverbrauch zu begrenzen, lautet der Hauptkonfigurationsparameter
work_mem
. Da dies pro Operation und nicht pro Abfrage gilt, können Sie es nicht einfach auf N setzen, wenn Sie N Speicherplatz verbrauchen möchten. Sie müssen es jedoch etwas optimieren und optimieren, um das gewünschte Ergebnis zu erzielen.Dies hilft jedoch nicht bei Fehlern und anderen Speicherverlusten im Servercode oder in den Erweiterungen. Sie können dies mit den prozessspezifischen Ressourcenlimits steuern, die von gesteuert werden
ulimit
. Was soll geschehen, wenn Sie das Limit erreichen und die Speicherzuweisung fehlschlägt? Es wird sich wahrscheinlich nicht so gut verhalten. Beheben Sie diese Fehler besser oder verwenden Sie eine andere Version.Die Stop-Abfragen, deren Ausführungszeit einen Schwellenwert überschritten hat, verwenden den Parameter `statement_timeout ', zB
quelle
Schauen Sie sich das Postgres Wiki an :
Sie können die Leistungseinstellungen pro Benutzer oder pro Datenbank anpassen, jedoch nicht, wann bestimmte Abfragen abgebrochen werden sollen.
quelle