[Allegro] problem mit import.exe bei großen datenbanken (es geht weiter!)
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Mär 7 15:45:48 CET 2012
Am 07.03.2012, schrieb B. Eversberg:
> Das ist knapp drunter, 2GB sind 2147483648 Bytes. Weil bei einem
> Abbruch das Ende der Schreibdatei nicht mehr genau bis zur
> Abbruchstelle reicht (wegen der blockweisen Speicherung) sieht es
> also sehr danach aus, daß hier die 2GB-Grenze die Ursache ist.
>
Nach einigem Testen stellte sich raus:
1. import16 führt die besagten ftell() und fseek() einfach nicht aus,
d.h. der Lesezeiger bleibt an der Stelle, und dann geht's einfach
weiter, glatt über die 2GB-Naht hinweg. import32 dagegen macht dann
unkontrollierte Sprünge, endet also planlos.
2. Das Problem läßt sich wohl umgehen, was wir zwar noch ganauer
durchdenken müssen, aber eine erste Testversion hat schon mal
die besagte Schallmauer korrekt durchbrochen und dann exakt
dasselbe geliefert wie import16. Mir will scheinen, sogar noch
deutlich schneller.
3. Sowohl unter 16 wie 32 bit läuft ein sequentielles Lesen anstandslos
hinter der Schallmauer weiter, d.h. es bemerkt diese gar nicht.
Nur das Positionieren ist also das Problem, nicht das Lesen.
Die Frage ist noch, ob es so mit jeder denkbaren Endebedingung klaglos
klappen wird. Darüber wird noch nachgedacht.
Erst mal zum Testen:
http://ftp.allegro-c.de/aktuelle-version/import-test.zip
Da ist ein neues import.exe drin, aber Vorsicht, es ist die
Testversion.
Wenn's damit auch bei Ihnen klappt, Herr Lehmann, sind wir ein Stück weiter.
Wer Zeit findet, kann gerne eigene Importe damit und mit index16
testen und die Ergebnisse vergleichen. Versagensfälle wären besonders
interessant.
B.E.
Mehr Informationen über die Mailingliste Allegro