Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firbird bzw. Interbase Datenbank verkleinern (https://www.delphipraxis.net/2729-firbird-bzw-interbase-datenbank-verkleinern.html)

Christof 4. Feb 2003 16:53


Firbird bzw. Interbase Datenbank verkleinern
 
Hallo,

ich habe folgende Frage ist es möglich die Datenbank wieder zu verkleinern?

Wie es aussieht vergrößert sich die Firbird Datenbank automatisch.

Ich habe noch Einstellmöglichkeiten für die Grenzen gefunden und ab wann und wieviel vergrößert werden soll.

Gib es sowas?

Ich habe mal 20000 Datensätze testweise importiert und wieder gelöscht. Nun ist meine Datenbank nach dem löschen nicht kleiner geworden. Gut ist ja bei einer Relationalen Datenbank normal. Aber wie kann ich das von Hand kleiner machen, bei MS-SQL gibt es die möglichkeit zu sagen Packe die Datenbank. Wie ist das bei Firebird oder Interbase?

Danke im Voraus.

Gruss

Christof

Lemmy 5. Feb 2003 06:29

Hi,

der Platz wird bei Inserts wieder belegt - Du hast also definitiv keine Platzverschwendung. Wenn Du das File dennoch kleiner haben willst, dann musst Du ein Backup - Restore durchführen. Damit wird das File neu aufgebaut und die Garbage-Collection erledigt ihre Aufgaben...

Weitere Vorteile eines Bacjup - Restore:

*Die Indizes werden neu aufgebaut -> Performance
*Alle Zähler werden zurückgesetzt -> Bei einer bestimmten Anzahl von Änderungen an den Tabellen sowie bei einer großen Differenz zwischen ältester Transaktion und neuester Transaktion wird ein Backup - Restore fällig.
.
.
.

Grüße
Lemmy

Christof 5. Feb 2003 12:32

Zitat:

Zitat von Lemmy
Hi,

der Platz wird bei Inserts wieder belegt - Du hast also definitiv keine Platzverschwendung. Wenn Du das File dennoch kleiner haben willst, dann musst Du ein Backup - Restore durchführen. Damit wird das File neu aufgebaut und die Garbage-Collection erledigt ihre Aufgaben...

Weitere Vorteile eines Bacjup - Restore:

*Die Indizes werden neu aufgebaut -> Performance
*Alle Zähler werden zurückgesetzt -> Bei einer bestimmten Anzahl von Änderungen an den Tabellen sowie bei einer großen Differenz zwischen ältester Transaktion und neuester Transaktion wird ein Backup - Restore fällig.
.
.
.

Grüße
Lemmy

Kann ich den Garbage-Collector nicht von Hand starten?

??Alle Zähler werden zurückgesetzt?? Heißt das die Generatoren? Das wäre schlecht damit wird ja der Primärschlüssel in meinen Tabellen gemacht!

Hansa 5. Feb 2003 13:02

Zitat:

Zitat von "Christof
??Alle Zähler werden zurückgesetzt?? Heißt das die Generatoren? Das wäre schlecht damit wird ja der Primärschlüssel in meinen Tabellen gemacht!

Das wäre ja wohl auch der Hammer. Nein, im Gegenteil die Werte der Generatoren werden mit gesichert. Was Lemmy meint, sind meiner Vermutung nach die Transaktionsnummern. IB hat ja, soweit ich weiß, als einzige DB ein Multi-Generationen-Prinzip. Da werden die Transaktionen fortlaufend durchnummeriert. Da kann man dann nicht nur die letzte Transaktion rückgängig machen, sondern z.B. vom Stand der Transaktion 180 auf den von 170 zurückgehen. Mich wundert es schon länger, daß andere Datenbanken das nicht können. Hätte ich was zu sagen, :mrgreen: so würde bei staatlichen Ausschreibungen diese Fähigkeit gefordert werden. Konkret selber eingesetzt habe ich das ganze so aber auch noch nicht.

Gruß
Hansa

Lemmy 9. Feb 2003 08:49

HI,

Zitat:

Zitat von Christof
??Alle Zähler werden zurückgesetzt?? Heißt das die Generatoren? Das wäre schlecht damit wird ja der Primärschlüssel in meinen Tabellen gemacht!

Nein, wie Hansa es schon erklärt hat werden bei Transaktionen eindeutige Nummern vergeben. Wird jetzt eine Transaktion aus unerfindlichen Gründen (z.B. Client-Absturz) nicht beendet, bleibt diese Transaktion offen. Wird die Differenz zwischen letzter offener und aktueller Transaktion zu groß, muss ein Backup_restore durchgeführt werden. Bei diesem wird diese Transaktion beendet (ich glaube mit einem RollBack). Der Grund dafür liegt im MGP (Multi-Generationen-Prinzip). Wird eine Transaktion geöffnet und ist schon eine andere Transaktion da, werden nur die Differenzdaten der 2. Transaktion gespeichert, um diese dann später in die DB einzupflegen. Je mehr Transaktionen geöffnet werden desto mehr Differenzdaten werden gespeichert.... Deshalb das Backup-Restore....
Grüße
Lemmy

DataCool 10. Feb 2003 20:31

Hi,

falls Dich interessiert, ich habe mir ein kleines Tool geschrieben welches Interbase-Datenbanken verkleinert.

Funktioniert ganz einfach nach dem Prinzip leere DB erstellen alle Tabellen-Strukturen übertragen. Alle Daten übertragen.

Bringt einiges bei größeren DBs

Data

Lemmy 11. Feb 2003 06:49

Hi DataCool,

bekommt man auch den Code für dieses Tool?? Wenn ja kannst Du mir das mal zumailen??
Grüße
Lemmy

DataCool 11. Feb 2003 08:58

Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

für alle die es interssiert, anbei der Source-Code zum optimieren von Interbase/Firebird Datenbanken !

Es werden keine SP oder Views optimiert bzw. übernommen.

Die Application akzeptiert BDE-Namen oder Interbase-Pfadangaben als Übergabe parameter.

Bitte bei Änderungen/Verbesserungen mir unter DataCool@gmx.net Bescheid geben.

Danke

Data


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