Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird .FDB Datei schrumpft nach löschen nicht (https://www.delphipraxis.net/92400-firebird-fdb-datei-schrumpft-nach-loeschen-nicht.html)

Gecko 19. Mai 2007 01:13


Firebird .FDB Datei schrumpft nach löschen nicht
 
Hallo,

habe in meiner Test-Datenbank (10MB) mit 10.000 Datensätzen in einer Tabelle einmal alle per SQL-DELETE herausgelöscht.
Die Tabelle ist nun leer, sonst ist nichts drin.

Trotzdem ist das DB File immernoch 10MB groß und wächst immer weiter...
Kann mir jemand sagen was man dagegn tun kann? Wie kann man das File weider kleinbekommen?

Sonst hat man ja irgendwann ein 500MB File das im zu Grunde zu 99% nur Datenschrott enthält...

DP-Maintenance 19. Mai 2007 01:27

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "Datenbanken" verschoben.
Ein Datenbank-Problem

Jürgen Thomas 19. Mai 2007 09:11

Re: Firebird .FDB Datei schrumpft nach löschen nicht
 
Backup + Restore hilft.

Warum die Datenbank immer noch wächst (statt dass der freie Raum für neue Datensätze benutzt wird), habe ich mir nicht gemerkt. Ich könnte mir vorstellen, es hängt mit den verschiedenen Datensatz-Versionen zusammen, sodass die Sätze (ähnlich wie früher unter dBase) nur "zur Löschung vorgemerkt" wurden, aber den Platz weiterhin blockieren.

Gruß Jürgen

TBx 19. Mai 2007 10:45

Re: Firebird .FDB Datei schrumpft nach löschen nicht
 
Hallo!
Beim Löschen eines Datensatzes wird dieser nicht physikalisch aus der Datenbankdatei gelöscht. Das passiert wert beim nächsten Sweep.
Auch beim Sweep veringert sich die Größe der Datenbankdatei nicht. Es wird nur der Platz in den einzelnen Pages freigegeben, sodass dieser wieder für neue Datensätze zur Verfügung steht.
Eine Firebirddatenbamk wird im laufenden Betrieb also niemals kleiner werden.
Eine Verkleinerung der Datenbankdatei ist nur durch Backup und Restore zu erreichen. Beim Restore wird nur soviel Platz für die Datenbank reserviert, wie tatsächlich (in Abhängigkeit der eingestellten Pageausnutzung) benötigt wird.

Gruß

Thomas

hoika 21. Mai 2007 09:30

Re: Firebird .FDB Datei schrumpft nach löschen nicht
 
Hallo,

Grund, warum der Platz nur als "gelöscht" markiert wird,
ist einfach Geschwindigkeit.
Es ist viel schneller, den gelöschten Platz wieder
zu belegen als vom Betriebssystem neuen Plattenspeicher anzufordern.


Heiko

Elvis 21. Mai 2007 09:50

Re: Firebird .FDB Datei schrumpft nach löschen nicht
 
Zitat:

Zitat von hoika
Grund, warum der Platz nur als "gelöscht" markiert wird,
ist einfach Geschwindigkeit.
Es ist viel schneller, den gelöschten Platz wieder
zu belegen als vom Betriebssystem neuen Plattenspeicher anzufordern.

Ganz genau. (Ohne Thomas in irgendeiner Weise widersprechen zu wollen :) )
Eine Vergrößerung der Datei bedeutet in fast jedem Fall dass eine Kopie derselben angelegt werden muss.
Wenn deine DB einmal die Größe X MB erreicht hat, ist es auch nach exzessivem Löschens nur wahrscheinlich, dass sie später wieder zu einer vergleichbaren Größe anwachsen wird.
Warum also sinnlos die Datei hin und her kopieren? ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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