AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird .FDB Datei schrumpft nach löschen nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird .FDB Datei schrumpft nach löschen nicht

Ein Thema von Gecko · begonnen am 19. Mai 2007 · letzter Beitrag vom 21. Mai 2007
Antwort Antwort
Gecko
(Gast)

n/a Beiträge
 
#1

Firebird .FDB Datei schrumpft nach löschen nicht

  Alt 19. Mai 2007, 02:13
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...
  Mit Zitat antworten Zitat
19. Mai 2007, 02:27
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "Datenbanken" verschoben.
Ein Datenbank-Problem
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

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

  Alt 19. Mai 2007, 10:11
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 19. Mai 2007, 11:45
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
hoika

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

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

  Alt 21. Mai 2007, 10:30
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
Heiko
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 21. Mai 2007, 10:50
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?
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  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 13:20 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