Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kann keine Datensätze mehr zu Paradox-DB hinzufügen (https://www.delphipraxis.net/66606-kann-keine-datensaetze-mehr-zu-paradox-db-hinzufuegen.html)

LeisureSuitLarry 1. Apr 2006 09:31

Datenbank: Paradox • Version: 10 • Zugriff über: BDE

Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Hallo beisammen,

bei einem älteren Projekt in Delphi 5 (eine Adressverwaltung) habe ich folgendes Problem:
Zu den schon vorhandenen ca. 125.000 Datensätzen wurden einmal 60.000 und dann nochmal 140.000 Sätze hinzugefügt. Funktionierte prima. Nun sollten nochmal 65.000 dazu und ich erhalte nach ein paar Datensätzen die Meldung, dass zur Datenbank nichts mehr hinzugefügt werden kann.

Also habe ich mit Paradox einen rebuild der Datenbank gemacht. Danach lassen sich ein paar hundert Sätze hinzufügen, danach das gleiche Spiel.

Kennt jemand das Problem und noch besser, eine Lösung dazu?

Das Projekt soll demnächst auf BDE2006 und dann auch auf ein anderes DB-System umgestellt werden, bis dahin sollte es aber noch irgendwie laufen :gruebel:

Die Fakten:
Datenbankgröße 131 MB, 327.351 Datensätze, Satzlänge 388 Byte, 6 Keys.
Datensätze werden über TTable eingefügt mittels
Delphi-Quellcode:
Table.append;
table.fieldbyname('Feldname').AsString:=Inhalt;
...
Table.post;
Auffällig war noch, dass das hinzufügen geöhnlich sehr langsam läuft, nur direkt nach dem Rebuild die ersten paar hundert Sätze Faktor 20 schneller.

Oder gibts es etwa eine Größenbeschränkung bei Paradox-Tabellen?

Grüße

Manfred

mkinzler 1. Apr 2006 11:04

Re: Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Hallo manfred versuch mal Testweise die datensätze per SQL-Insert (TQuery) einzufügen. TTable-Objekte sind gefährlich bei großen Datenmengen.

Thanatos81 1. Apr 2006 11:48

Re: Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Mit welcher Block Size wurde die DB denn erstellt? Habe lange nix mehr mit Paradox gemacht, aber wenn ich mich recht erinnere, hing die max. Größe einer tabelle u.a. davon ab, welche block Size in der BDE während des Erstellens angegeben war.

Evtl. könnte man also die Blocksize erhöhen, neue tabellen mit der selben Struktur erstellen und die Daten kopieren. aber wie gesagt, lange nix mehr mit Paradox gemacht, ich übernehme als keinerlei Gewähr dass das hilft ;-)

marabu 1. Apr 2006 16:33

Re: Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Der Zusammenhang zwischen BlockSize und MaxTableSize ist korrekt:

Zitat:

This is the "maximum table size" determined when this
table was created. It really indicates the size of each
block of records in the data section of the table.

1 = 64M (block size = $0400 bytes)
2 = 128M (block size = $0800 bytes)
3 = 192M (block size = $0C00 bytes)
4 = 256M (block size = $1000 bytes)
Die Standardeinstellung ist 2 (2048). Wer das Paradox-Speicherformat in Projekten einsetzt, der hat auch ein Repair Tool, mit dem er die BlockSize einer Tabelle verändern kann. Alternativ kann mit BDEADMIN die BlockSize auf 4096 angehoben und die Tabelle umkopiert werden.

Grüße vom marabu

LeisureSuitLarry 3. Apr 2006 09:39

Re: Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Erst mal Danke an alle.

Die Blocksize von 2K war das Problem.

Allerdings wehrt sich Paradox beim ändern sehr heftig. Verändert man die Blocksize der Datenbank, gehen Datensätze verloren. Beim Kopieren von der alten DB in die Neue mittels Paradox 10 kommt erst mal eine Fehlermeldung, dass der Datenträger voll wäre... (bei 40GB Platz).
Kopiert man aber die (neue) Datenbank vom Windows2003Server auf eine lokale Platte, lassen sich die Datensätze im Schleichtempo reinkopieren. Dabei verliert man zwar mindestens eine Keydatei :evil: , aber was solls, läßt sich ja rekonstruieren.

Grüße

Manfred

Thanatos81 3. Apr 2006 10:52

Re: Kann keine Datensätze mehr zu Paradox-DB hinzufügen
 
Zitat:

Zitat von LeisureSuitLarry
Erst mal Danke an alle.

Die Blocksize von 2K war das Problem.

Allerdings wehrt sich Paradox beim ändern sehr heftig. Verändert man die Blocksize der Datenbank, gehen Datensätze verloren. Beim Kopieren von der alten DB in die Neue mittels Paradox 10 kommt erst mal eine Fehlermeldung, dass der Datenträger voll wäre... (bei 40GB Platz).

Jupp, das ist auch ein Bug entweder in der BDE , leg auf dem Server mal eine 1-Byte große Datei an ;-)

Wenn der freie Speicherplatz in GB mod 4 = 0 ist, kommt die Meldung die Platte wäre voll :roll: Siehe auch hier


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