PostgreSQL 9.1.x: Verfügbaren free space eines Tablespace bestimmen?
-
Hallo,
ich habe hier eine Archivierungssystem, das Daten in eine PostgreSQL db (9.1.x, Windows 64bit) schreibt. Das System nimmt Aufträge per TCP/IP an und schreibt dann die entsprechenden Daten in die db. Nun soll das Archivierungssystem, falls der Festplattenplatz im Tablespace der db knapp wird, keine weiteren Telegramm annehmen und auch nichts mehr in die db schreiben.
Wie kann ich per SQL herausbekommen, wieviel Platz noch im Tablespace frei ist? Ich kann leider keine Erweiterungen wie pg_stattuple benutzen, sondern muss mit den Standardmodulen auskommen. Gibt´s da überhaupt ´ne Lösung?
-
Wäre es nicht leichter, das vom Archivierungssystem machen zu lassen? Zusätzlich natürlich irgendeine Art von Alerting auf OS-Ebene.
-
Ja, das macht es schon. Aber das Archivierungssystem muss nicht zwingend auf dem db Rechner laufen.
-
in Postgresql kann man die Größe der Tabellen auswerten. Wenn man dann weiß, auf welcher Platte die Tabelspaces liegen, dann weiß man ja auch, wie gros die ist und kann entsprechend reagieren.
Anderer Lösungsansatz - Tablespaces in eine extra partition packen und dann abfragen, wie voll die schon ist. Unter linux per df -h oder so unter Windows - müsste man suchen. Das täglich und wenn limit unterschritten irgendwo einen
Schalter setzen (z. B irgend eine kleine Datei irgendwo auf einem Plattenbereich, wo Datenbankserver und Archivierung beide Zugriff haben. Dann kann die Archivierung nachschauen und wenn Datei da, entsprechend reagieren.