Hallo Shappy,
in der WebGUI gibt es unter den System Optionen dafür die Parameter
- Metric history = Tabelle stat
- Aggregated metric history = Tabelle stat_hourly
Beide Tabellen sind partitioniert und es wird pro Tag eine Partition angelegt. Standardmäßig steht die Aufbewahrungszeit für Metriken auf 365 Tage.
Mein Tipp ist das du dir zunächst anschaust wie groß die einzelnen Partitionen der Tabellen sind:
SELECT
c.relname AS partition,
pg_size_pretty(pg_total_relation_size(c.oid)) AS total,
pg_size_pretty(pg_relation_size(c.oid)) AS heap,
pg_size_pretty(pg_total_relation_size(c.reltoastrelid)) AS toast_total
FROM pg_class c
JOIN pg_inherits i ON i.inhrelid = c.oid
JOIN pg_class p ON p.oid = i.inhparent
WHERE p.relname = 'stat'
ORDER BY pg_total_relation_size(c.oid) DESC;
Dann rechne dir so ungefähr aus wieviel Tage du aufbewahren möchtest und passe die Aufbewahrungszeit an. Ältere Partitionen werden dann automatisch vom DB-Manager entfernt, aber achtung, der Job zum Löschen von Partionen läuft nur 2 Mal pro Tag.
Beispiel zur Berechnung: wenn die Partitionen ungefähr 3GB groß sind und wenn du nur 25GB Disk Space für Metriken nutzen möchtest, dann solltest du dementsprechend die Historie auf 8 Tage setzen, eventuell sogar kleiner, weil natürlich auch die aggregierten Daten Platz benötigen.
Eine weitere Möglichkeit wäre die Datenbank für den Datastore auf einen eigenen Server mit viel Disk Space zu legen.
Falls du das entfernen der Partitionen beschleunigen möchtest, dann kannst du entweder selbst mit einem "drop" die Partionen entfernen oder - meine Empfehlung - du setzt den Job in der Datenbank zurück:
update db_manager_job set time = 0 where name = 'delete_partition';