{"id":8657,"date":"2026-02-23T15:06:44","date_gmt":"2026-02-23T14:06:44","guid":{"rendered":"https:\/\/speefak.spdns.de\/oss_lifestyle\/?p=8657"},"modified":"2026-02-23T15:37:50","modified_gmt":"2026-02-23T14:37:50","slug":"zoneminder-datenbank-und-events-speicherverbrauch-reduzieren","status":"publish","type":"post","link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/zoneminder-datenbank-und-events-speicherverbrauch-reduzieren\/","title":{"rendered":"ZoneMinder: Datenbank und Events Speicherverbrauch reduzieren"},"content":{"rendered":"<p data-start=\"161\" data-end=\"413\">ZoneMinder kann bei l\u00e4ngerer Laufzeit ohne Optimierungen sehr gro\u00dfe Datenmengen in der MySQL-Datenbank, Event-Speiche und im Dateisystem erzeugen. Ohne geeignete Aufbewahrungs- und Bereinigungsstrategien kann dies zu starkem Speicherverbrauch und Performance-Einbu\u00dfen f\u00fchren. Die nachfolgenden Konfigurationsma\u00dfnahmen zielen darauf ab, das Datenvolumen planbar zu begrenzen, ohne die Kernfunktionen (Motion Detection, Recording, Event Review) funktional einzuschr\u00e4nken.<\/p>\n<hr \/>\n<h4>Zielsetzung<\/h4>\n<ul>\n<li data-start=\"627\" data-end=\"661\">Begrenzung der Event-Retention<\/li>\n<li data-start=\"627\" data-end=\"661\">Reduktion der Tabellenwachstumsrate (insbesondere <code data-start=\"714\" data-end=\"722\">Frames<\/code>)<\/li>\n<li data-start=\"627\" data-end=\"661\">Stabilisierung der Datenbankgr\u00f6\u00dfe<\/li>\n<li>Minimierung manueller Wartungsma\u00dfnahmen<\/li>\n<\/ul>\n<h4 data-start=\"854\" data-end=\"932\">Bei konsistenter Konfiguration sind typischerweise folgende Gr\u00f6\u00dfen erreichbar:<\/h4>\n<ul data-start=\"934\" data-end=\"1148\">\n<li data-start=\"934\" data-end=\"968\">Event-Retention: 7\u201330 Tage<\/li>\n<li>Frames-Tabelle: &lt; 500.000 Datens\u00e4tze<\/li>\n<li>frames.ibd (InnoDB): ca. 300\u2013500 MB<\/li>\n<li>Wachstumsrate: nur noch geringer, linearer Zuwachs von Datenbank und Event-Storage<br \/>\n<hr \/>\n<\/li>\n<\/ul>\n<h4>1. Automatische L\u00f6schung alter Events einrichten<\/h4>\n<p>Entfernt automatisch Events, die \u00e4lter als ein definierter Zeitraum sind. Das ist die effektivste Ma\u00dfnahme gegen unbegrenztes Wachstum von Datenbank und Speicherplatz.<\/p>\n<p>&#8211; Filter \u2192 Neuer Filter<br \/>\n&#8211; Bedingung: StartTime &lt; 7 Tage (oder 14\/30 Tage)<br \/>\n&#8211; Aktion: Delete (inkl. aller zugeh\u00f6rigen Dateien und DB-Eintr\u00e4ge)<br \/>\n&#8211; Automatische Ausf\u00fchrung aktivieren (PurgeWhenFull oder regelm\u00e4\u00dfig)<\/p>\n<h4>2. Anzahl der Frames in der Datenbank stark reduzieren<\/h4>\n<p>Durch BULK_FRAME_INTERVAL wird bei kontinuierlicher Aufnahme nur jeder n-te Frame in die Frames-Tabelle geschrieben. Dadurch sinkt die Anzahl der Datenbankzeilen um 95\u201399 %.<\/p>\n<p>&#8211; Optionen \u2192 Konfig.<br \/>\n&#8211; BULK_FRAME_INTERVAL auf 200\u2013500 setzen (empfohlen: 200)<br \/>\n\u2192 Nur jeder n-te Frame wird bei kontinuierlicher Aufnahme in die Frames-Tabelle geschrieben<\/p>\n<h4>3. Speicherung von Einzelbildern (JPEGs) minimieren<\/h4>\n<p>Deaktiviert oder beschr\u00e4nkt die Erzeugung von JPEG-Dateien pro Frame. Das spart massiv Speicherplatz im Events-Verzeichnis und reduziert indirekt Datenbank-Eintr\u00e4ge.<\/p>\n<p>&#8211; Pro Monitor oder global (Optionen \u2192 Storage):<br \/>\n&#8211; Save JPEGs \u2192 Disabled oder Alarm Frames Only<br \/>\n&#8211; Image Store \u2192 Frames Only oder komplett deaktiviert<\/p>\n<h4>4. Event-Statistiken deaktivieren<\/h4>\n<p>Verhindert das Schreiben detaillierter Frame-Statistiken in die Stats-Tabelle. Bei den meisten Installationen unn\u00f6tig und verursacht oft unn\u00f6tiges Wachstum auf mehrere GB.<\/p>\n<p>&#8211; Optionen \u2192 Logging<br \/>\n&#8211; RECORD_EVENT_STATS \u2192 No<br \/>\n\u2192 Verhindert Wachstum der Stats-Tabelle<\/p>\n<h4>5. Audit-Daemon ressourcenschonend konfigurieren<\/h4>\n<p>Der Audit-Daemon r\u00e4umt verwaiste Eintr\u00e4ge (Orphans) auf. Ein zu kurzes Intervall belastet CPU und IO unn\u00f6tig \u2013 ein l\u00e4ngeres Intervall reicht bei normalem Betrieb aus.<\/p>\n<p>&#8211; Optionen \u2192 System<br \/>\n&#8211; ZM_RUN_AUDIT \u2192 Yes<br \/>\n&#8211; ZM_AUDIT_CHECK_INTERVAL \u2192 21600 (6 Stunden) oder 86400 (24 Stunden)<\/p>\n<h4>6. Nach Konfigurations\u00e4nderungen und Purge Platz freigeben<\/h4>\n<p>Die genannten Befehle stoppen tempor\u00e4r ZoneMinder, r\u00e4umen Reste auf, optimieren die Tabellen und geben den physischen Speicherplatz im Dateisystem wirklich frei.<\/p>\n<pre class=\"lang:default decode:true\">systemctl stop zoneminder\r\nzmaudit.pl -f\r\nmysql -u root zm -e \"OPTIMIZE TABLE Frames;\"\r\nmysql -u root zm -e \"OPTIMIZE TABLE Stats;\"\r\nsystemctl restart mysql\r\nsystemctl start zoneminder<\/pre>\n<h4>7. Regelm\u00e4\u00dfige \u00dcberpr\u00fcfung der Entwicklung<\/h4>\n<p>Die angegebenen Kommandos zeigen die aktuelle Anzahl von Events und Frames sowie die reale Dateigr\u00f6\u00dfe der wichtigsten Tabellen. So l\u00e4sst sich der Erfolg der Ma\u00dfnahmen \u00fcberpr\u00fcfen.<\/p>\n<pre class=\"lang:default decode:true\">mysql -u root zm -e \"SELECT COUNT(*) FROM Events;\"\r\nmysql -u root zm -e \"SELECT COUNT(*) FROM Frames;\"\r\nls -lh \/var\/lib\/mysql\/zm\/Frames.ibd\r\ndf -h \/var\/cache\/zoneminder\/event<\/pre>\n<hr \/>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2821 alignleft\" src=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-content\/uploads\/2014\/08\/CC_BY_NC_SA.png\" alt=\"CC_BY_NC_SA\" width=\"65\" height=\"23\" \/>by Speefak<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ZoneMinder kann bei l\u00e4ngerer Laufzeit ohne Optimierungen sehr gro\u00dfe Datenmengen in der MySQL-Datenbank, Event-Speiche und im Dateisystem erzeugen. Ohne geeignete Aufbewahrungs- und Bereinigungsstrategien kann dies zu starkem Speicherverbrauch und Performance-Einbu\u00dfen f\u00fchren. Die nachfolgenden Konfigurationsma\u00dfnahmen zielen darauf ab, das Datenvolumen planbar zu begrenzen, ohne die Kernfunktionen (Motion Detection, Recording, Event Review) funktional einzuschr\u00e4nken. Zielsetzung Begrenzung der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,96,112],"tags":[],"class_list":["post-8657","post","type-post","status-publish","format-standard","hentry","category-sicherheit","category-video-ueberwachung","category-zoneminder"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"speefak","author_link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/author\/speefak_oss\/"},"rttpg_comment":5,"rttpg_category":"<a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/sicherheit\/\" rel=\"category tag\">Sicherheit<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/video-ueberwachung\/\" rel=\"category tag\">Video \u00dcberwachung<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/zoneminder\/\" rel=\"category tag\">Zoneminder<\/a>","rttpg_excerpt":"ZoneMinder kann bei l\u00e4ngerer Laufzeit ohne Optimierungen sehr gro\u00dfe Datenmengen in der MySQL-Datenbank, Event-Speiche und im Dateisystem erzeugen. Ohne geeignete Aufbewahrungs- und Bereinigungsstrategien kann dies zu starkem Speicherverbrauch und Performance-Einbu\u00dfen f\u00fchren. Die nachfolgenden Konfigurationsma\u00dfnahmen zielen darauf ab, das Datenvolumen planbar zu begrenzen, ohne die Kernfunktionen (Motion Detection, Recording, Event Review) funktional einzuschr\u00e4nken. Zielsetzung Begrenzung der&hellip;","_links":{"self":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/8657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/comments?post=8657"}],"version-history":[{"count":0,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/8657\/revisions"}],"wp:attachment":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/media?parent=8657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/categories?post=8657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/tags?post=8657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}