[Allegro] Blaehungen im Index?
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Apr 27 09:39:54 CEST 2011
Am 27.04.2011 00:12, schrieb Thomas Berger:
> bei einer Familie groesserer Datenbanken kaempfe ich mit der 2GB-Grenze
> fuer die .adx-Datei(en) [Multix ist mir bekannt, ich kaempfe aber dennoch],
> und zwar verstehe ich zum einen nicht, warum die .adx-Dateien so viel
> umfangreicher sind als die Summe der Groessen der ii-Dateien, aus denen
> sie aufgebaut wurden und zum anderen bekomme ich bei aehnlichen Datenbanken
> mit aehnlicher Indexierung unerklaerliche Groessenabweichungen im
> dreistelligen MB-Bereich:
>
Der eigentliche Index enthält, anders als die Zwischendateien,
noch zusätzliche Steuerbereiche. Ferner hat er eine Anordnung in
Blöcken definierter Größe, die jeweils etwas Freiraum enthalten,
damit bei Neueinträgen nicht immer sofort eine Blockteilung nötig
wird, die mit Zeitaufwand verbunden ist.
> Koennen Sie anhand dieser Messungen einschaetzen, ob die Abweichungen
> innerhalb des Erwartbaren sind oder ob es Hinweise auf eine Fehlfunktion
> von index oder qrix gibt?
Ungünstig ist es, wenn es viele Schlüssel von großer Länge
gibt, die keine längeren, gemeinsamen Anfangsteile haben.
Das mindert nicht nur den Effekt der Komprimierung, sondern füllt
auch die besagten Blöcke weniger gut aus, so daß mehr davon
gebildet werden müssen. Diese Dinge sind nicht gut abschätzbar
in ihrer Wirkung bei konkreten Daten.
> Und eine vielleicht etwas konkretere Frage: Gibt es eine Schwelle
> von Satznummern pro Schluessel, oberhalb der das eigentlich zu
> begruessende Zusammenfallen zu einem sehr unguenstigen Speicherverhalten
> fuehrt?
Das gibt es m.W. nicht. Außerdem sind die hochfrequenten
Schlüssel aufs Ganze gesehen wohl stets in der Unterzahl
gegenüber den niedrigfrequenten, die noch dazu mehr Platz
brauchen, weil bei ihnen die Komprimierung nicht so viel bringt.
Man könnte wohl an einigen internen Einstellungen etwas drehen,
die auf feste Werte gesetzt sind, damit man nicht noch mehr
parametrieren muß als eh schon. Sehr lohnend wäre so etwas aber
m.E. nicht.
Die Blockgröße ist z.B. 2048, Freiraum 128, also 6.25%. Das
können Sie bei Betrachtung der .ADX mit Hex-Editor leicht sehen.
(Freiraum mit Nullen gefüllt). Diese Blockgroesse waere wohl
aenderbar, die Zahl 128 eher nicht, aber so schnell kann ich
das jetzt nicht sagen. Das würde einen neuen Indexparameter
bedingen. Vielleicht könnte man die 6.25% auf ca. 1% runterdrücken.
Zu welchen Nebenkosten, weiß ich nicht.) MultiX, scheint mir,
bringt erheblich mehr.
Da eine weit überwiegende Mehrheit der Anwender nicht betroffen
ist, vielleicht gar alle außer Ihnen, ist mir der Aufwand für
eine Aufbohrung in dieser Sache (zeitaufwendiges Testen!) momentan
zu hoch.
B.E.
Mehr Informationen über die Mailingliste Allegro