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
Seite 1 von 2  1 2      
Gruber_Hans_12345

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

DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 11: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
221 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 12: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.439 Beiträge
 
Delphi 2007 Professional
 
#3

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 12: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.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DB Firebird 3.0 wächst extrem

  Alt 6. Aug 2017, 17: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.439 Beiträge
 
Delphi 2007 Professional
 
#5

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 08: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.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 09: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
mkinzler
(Moderator)

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

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 10:08
Es scheint Probleme mit der GC zu geben. Verringere einmal das Sweep-Intervall.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
679 Beiträge
 
FreePascal / Lazarus
 
#8

AW: DB Firebird 3.0 wächst extrem

  Alt 8. Aug 2017, 13:57
Sweep Interval wird nicht helfen, wenn die Differenz zwischen Oldest und Next so gering bleibt, daher wenn das
eh so wenig Datensätze sind und du auf jeden Fall den commit machst, bau einfach mal ein regelmäßiges

select count(*) from Tab

in deine Anwendung ein, am besten in einer eigenen Transaktion. Dadurch werden dann auch garantiert die Pages
durch die Garbage Collection aufgeräumt werden, in denen die gelöschten Recordversionen liegen und sobald
möglich neu benutzt.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

AW: DB Firebird 3.0 wächst extrem

  Alt 9. Aug 2017, 13: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.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DB Firebird 3.0 wächst extrem

  Alt 9. Aug 2017, 13: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
Antwort Antwort
Seite 1 von 2  1 2      


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 13:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz