AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB Firebird 3.0 wächst extrem
Thema durchsuchen
Ansicht
Themen-Optionen

DB Firebird 3.0 wächst extrem

Ein Thema von Gruber_Hans_12345 · begonnen am 6. Aug 2017 · letzter Beitrag vom 10. Aug 2017
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#1

DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 10:27
Datenbank: Firebird • Version: 3.0 • Zugriff über: Delphi
Hallo ich habe eine Datenbank mit Firebird 3.0 erstellt, wo ich nun zyklisch (5 Sekunden) Einträge in eine Log schreibe.
Die Logs werden aber nicht immer geinsert sondern, mit UPDATE OR INSERT geschrieben, in einen Ring Buffer.

Also es gibt nur 1440 Einträge für das Log wo nach den 1440 Eintrag wieder bei eins angefangen wird.

Also nach einer gewissen zeit werden nur mehr Updates gemacht.

Das problem ist, das nun die Datenbank extrem wächst zum Teil.
Das Backup ist gerade mal 2MB groß, im Moment ist die 300MB groß (nach ca. 2 Stunden lauf und Speichern der Index) vor kurzem hatte ich das Problem das sie 3GB groß war und mir der Speicherplatz ausging.

Mir wäre es verständlich, wenn ich DELETE und INSERT mache jedesmal, aber mit primitiven UPDATES?

ein weiter punkt ist, das ich alle 5 Sekunden ein UPDATE (in eine andere Tabelle) mache wo ich ein BLOB Feld aktualisiere mit 100kB ...

was kann ich da noch optimieren?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 11:22
Firebird ist eine Transactionsorientierte Datenbank , d.h. sie hält verschiedene Versionen der Datensätze bereit.
D.H. es mach keinen Unterschied ob Insert oder Update ,da das Update auch einen neuen Datensatz erstellt mit einen höheren Versions(transaction)-Zähler als der alte

Das Problem so wie ich es sehe ist dass die Transactionen nicht committed werden (Commitretaining genügt nicht)
dann werden die alten Versionen der Daten nicht freigegeben und die Sweep und Garbagecollection Mechanismen
können die alten Daten nicht freigeben

mfg Hannes
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#3

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 11:27
Also eigentlich mache ich immer ein Commit, ich habe einen Dienst der immer reinschreibt und nach den 5 sekunden dann auch das Commit macht.
Und andere Prozesse die daraus lesen

Auch die Database Statisk schaut nicht shcelcht aus hätte ich gesagt (NExt Transaction und oc)

Code:
Database "D:\INTERBASE\MONITOR.FDB"
Database header page information:
   Flags         0 
   Generation      25109 
   System Change Number   0 
   Page size      8192 
   ODS version      12.0 
   Oldest transaction   25058 
   Oldest active      25059 
   Oldest snapshot      25059 
   Next transaction   25062 
   Sequence number      0 
   Next attachment ID   29 
   Implementation      HW=AMD/Intel/x64 little-endian OS=Windows CC=MSVC
   Shadow count      0 
   Page buffers      0 
   Next header page   0 
   Database dialect   3 
   Creation date      Aug 6, 2017 8:52:15 
   Attributes      force write
 
    Variable header data:
   Sweep interval:      20000 
   *END*
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 16:40
Hallo,
und die anderen, lesenden Prozesse machen auch ein Commit?

Mach doch mal ein Backup/Restore.
Wenn die DB dann wieder klein ist, liegt es an den Transaktionen.
Heiko
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#5

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 07:44
Ja mit Backup & Restore wirds wieder klein.

Eigentlich schon
allerdings muss ich sagen,das ich gerade gemerkt habe,, das ich mit der IBConsole noch drauf war, und die hält eine Transaktion ja immer offen .... hab die mal geschlossen und schaue obs noch weiter wächst
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#6

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 08:10
allerdings muss ich sagen,das ich gerade gemerkt habe,, das ich mit der IBConsole noch drauf war, und die hält eine Transaktion ja immer offen .... hab die mal geschlossen und schaue obs noch weiter wächst
Dann hätte in der Datenbankstatistik eine grosse Differenz zwischen der ältesten und der aktuellen Transaktionsnummer sichtbar sein müssen. Die IBConsole-Transaktion müsste dann die älteste ID gehabt haben. Wenn die Differenz tatsächlich nur 3 ist, passt das nicht.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#7

AW: DB Firebird 3.0 wächst extrem

  Alt 9. Aug 2017, 12:17
Ist der Effekt reproduzierbar? Tritt er nur auf wenn IBConsole geöffnet ist?

Da bei uns eine größere InterBase Installation im Einsatz ist die wir eventuell auf Firebird migrieren wollen, ist das Thema "offene Transaktionen" uns schon öfter begegnet, aber eine so schnell wachsende Datenbank bisher nicht (wir erzeugen bei einer Transaktionsdifferenz von über 20000 einen Alarm).
Michael Justin
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.875 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: DB Firebird 3.0 wächst extrem

  Alt 9. Aug 2017, 12:29
Das Problem ist vermutlich der Blob, der regelmässig aktualisiert wird ( = neue Version = neuer DS)
Für die Implementierung der Emulation eines Ringpuffers ist eine DBMS ( speziell ein auf Versionierung basierendes System) nicht so geeignet.
Ein Delete mit neuem Insert wäre m.E. besser. Da hier dann die Datensätze sofort als gelöscht markiert werden und dann direkt Überschrieben werden können.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#9

AW: DB Firebird 3.0 wächst extrem

  Alt 9. Aug 2017, 21:12
Das mit dem Blob ändern ist sicherlich Teil des Problems, weil alle Versionen des Blob vor dem update komplett in der db bleiben und nach dem update neu reingeschrieben werden, weil sonst kein rolllback möglich wäre und blobs halt auch mal 1GB sein können, wenn man das braucht (geht je nach pagesize mit bis zu 128GB pro Blob Feld und Record.

Es gibt auch ein Tracker Eintrag, aus dem deutlich wird, das das sogar bei Variablen vom Typ Blob passiert, ohne das die überhaupt in eine Tabelle geschrieben werden sollen: http://tracker.firebirdsql.org/browse/CORE-5114

Also ist es sicherlich ein guter vorschlag, statt einen Blob mehrfach zu ändern, diesen besser zu lösche und neu einzutragen, weil da der Garbagecollector das Leben ein wenig einfacher hat.

Wenn aber keine alte Transaktion offen ist, dann würde ein zugriff auf die Blob inhalt auch den Garbage collector anschmeissen. In dem Falle dann nicht einfach regelmäßíg select count(*) machen, sondern zB

select sum(char_length(blobspalte)) from tabelle

(das zwingt Firebird dazu, sich die Blobinhalte mit alle pages anzuschauen und benachrichtigt den Garbagecollector über nicht mehr benutzte blob pages.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: DB Firebird 3.0 wächst extrem

  Alt 10. Aug 2017, 07:01
ggF. hilft auch die exakte Prüfung der Where Clauses, vielleicht wird zu viel aktualisiert.
Und
vielleicht ein kleiner Umbau mit 1:1 Relation von Hauptdaten zu Blobdatentabelle. Letztere dann nur ändern, wenn es wirklich sein muss.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz