Bisher dachte ich, dass gelöschte Daten in der SQLlite-DB sofort Speicherplatz freigeben (nur innerhalb der DB, nicht auf der Festplatte!), der dann von der DB mit neuen Daten belegt werden kann. Das würde bedeuten, dass die Größe des DB-Files nicht wächst, wenn genau so viele Daten in der DB (durch den RS DB Analyzer) gelöscht werden, wie neue reinkommen (das ist natürlich nur ein theoretisches Modell). Siehe auch dazu: Tipps&Tricks zum Datenmanagement in IP-Symcon

Dem scheint nicht ganz so zu sein. Vielmehr bin ich mir jetzt sicher, dass dieser Speicherplatz nicht vollständig freigegeben wird.

Wie kommt’s?

Entwicklung Filegröße IPS Datenbank nach Reaggregation und Verdichtung

Entwicklung Filegröße IPS Datenbank nach Reaggregation und Verdichtung

Wie schon angedeutet: ich hab seit mehreren Monaten nicht mehr reaggregieren lassen (ist mir fast peinlich: es waren 9 Monate). In der Zeit ist die IPS-Datenbank scheinbar schwanger geworden.

Im Bild Rechts ist der Verlauf der Datenbank-Größe (in MB) der verg. 365 Tage dargestellt. Am 15.10.2013 habe ich eine Neuaggregation aller geloggten Variablen über den RS DB Analyzer angestoßen, die am Donnerstag, den 17.10.2013 abgeschlossen wurde. Ab diesem Tage nahm die Filegröße der DB nicht mehr zu (obwohl in diesem Zeitraum überdurchschnittlich viele Daten geloggt wurden: täglich zwischen 10.000 und 80.000 Datensätze). Am 03.11.2013 habe ich dann die Datenbank über das Firefox-PlugIn „SQLite Manager“ verdichten lassen. Am nächsten Tag konnte man das Ergebnis im Wachstumsbaum bestaunen: Die DB (bzw. das DB-File) ist um ganze 256 MB geschrumpft!

Was bedeutet das nun?

Dem aufmerksamen Leser wird es nun dämmern: allein das (regelmäßige) Löschen von nicht mehr benötigten Daten reicht nicht aus, um dem inflationärem Wachstum des DB-Files einhalt zu gebieten. Das bedeutet nicht, dass das regelmäßige, automatische Löschen von veralteten Datenbeständen durch den DB-Analyzer komplett wirkungslos ist. Ganz im Gegenteil: ich beobachte regelmäßig eine Flatline (teilweise über mehrere Tage) im Wachstum, wenn über Nacht größere Datenmengen gelöscht wurden.

Daraus lässt sich wiederum schließen: gelöschte Datenbereiche werden von der DB wieder aufgefüllt (und reduziert so das DB-Wachstum), es gibt aber scheinbar auch Fälle, in denen dieser Effekt nicht wirksam wird.

Hier hilft dann wirklich nur noch die Reaggregation, und zwar regelmäßig.

Genau das werde ich jetzt auch intensiver tun. Natürlich nicht jeden Tag, aber in deutlich kürzeren – und vor allem regelmäßigen Intervallen. Aktuell schieße ich mich auf eine monatliche Reaggregation aller Variablen ein, bei denen eine automatische Löschung der Altdaten vorgenommen wird. Und dass immer zu Beginn eines Monats.

Nun würde sich ja anbieten, diese Aufgabe zu automatisieren und als neues Feature in den DB-Analyzer einzubauen. Doch dazu muss ich zunächst mal den Entwickler auftreiben (wo steckt der Typ eigentlich – im Winterschlaf?)

 


 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

css.php