Seitengröße

<< Segmentgröße (Blob) | IBExpert Glossar | Sekundärdateien >>

Seitengröße (Page Size)

Hier wird die Datenbankseitengröße in Bytes festgelegt.

Firebird/ InterBase® Datenbanken werden in Blöcken gespeichert. Jeder dieser Blöcke wird „Seite“ genannt. Datenbankverwaltung geschieht im Wesentlichen durch blockweisen Zugriff auf die Festplatte. Je mehr Daten pro Zugriff von einer einzelnen Datenbankseite geholt werden, desto weniger häufig ist es notwendig eine neue Seite zu laden, zumindest theoretisch. Praktisch, abhängig von dem Betriebssystem und der Server-Hardware, kann der Zugriff auf längere Datenbankseiten die Leistung sogar negativ beeinflussen, da 1024 Bytes schneller geladen werden können, als 8192 Bytes.

Wenn Sie eine Datenbank erzeugen (IBExpert Menüpunkt Datenbank / Datenbank erzeugen), ist die Standardvorgabe für die Datenbank Seitengröße 1024 Bytes. Dies ist gleichzeitig die kleinste Einheit. Weitere mögliche Werte sind 2048, 4096, 8192 und 16384 Bytes.

Seit Firebird 2.1 Seitgrößen 1K und 2K werden als Ineffizient betractet. Diese kleine Seitengröße-Einschränkung gilt nur für neue Datenbanken, ältere Datenbank können egal welche Seitengröße verbunden werden.

Eine große Seitengröße hat in folgenden Situationen einige Vorteile:

  1. Viele indexbasierte Operationen (Indizes arbeiten schneller, wenn die Indextiefe minimiert ist).
  2. Breite Datensätze, denn mit sehr breiten Datenstrukturen, d.h. mit sehr vielen und/oder sehr langen Spalten ist das Lesen eines Datensatzes effizienter. Wenn Datensätze nicht auf eine Seite passen, müssen mehrere Seiten gelesen werden, um einen einzelnen Datensatz zu holen. Dasselbe gilt für das Schreiben; d.h. ein Abruf über mehrere Seiten ist notwendig.
  3. Große Blobfelder, da Daten effizienter gespeichert und abgerufen werden können, wenn weniger Seiten geholt werden müssen. Der Grund dafür ist, dass Blobspalten, angenommen die beinhalteten Daten passen auf eine Seite, auf Datenseiten mit anderen Daten zusammen gespeichert werden. Somit werden Daten sowohl von dem Standardfeld als auch der Blobspalte geholt, wenn ein Datensatz geholt wird. Mit größeren Blobs ist der Schreib- und Leseprozess ebenfalls effizienter, da zum Beispiel 100 Zugriffe für eine 100K Blobspalte bei einer Seitengröße von 1K notwendig sind. Jedoch bei einer Seitengröße von 8K nur 13 Zugriffe benötigt werden.

Eine kleine Seitengröße ist ausreichend, wenn viele Transaktionen nur eine geringe Anzahl von Zeilen zurückgeben. Auf schlanke Tabellenstrukturen mit kleinen Datenbankseiten können Lese- und Schreiboperationen schneller zugreifen. Zudem wird weniger Speicherplatz benötigt und es können mehr Datenbankseiten im Cache gehalten werden. Eine Datenbank mit einer Seitengröße von 4096 Bytes kann als optimal betrachtet werden, da dies die Windows Blockgröße ist. Daher bringen kleinere Seitengrößen keinen Vorteil, da Windows weiterhin 4K-Blöcke holen wird.

Die Datenbankseitengröße hat einen direkten Einfluss auf die Größe des Datenbankcaches, was alle oben genannte Punkte beeinflusst Wenn eine Seitengröße von 16 KB festgelegt wurde und der Datenbankcache des Firebird Servers in der firebird.conf auf ein Maximum von 128.000 Seiten definiert wurde, werden 2GB Cache für die Datenseiten gewonnen. Dieselbe Cache-Definition mit einer Seitengröße von 1KB bietet nur 180MB cache. Weiteres zum Thema Cache-Definition für Firebird Superserver und Classic Server finden Sie unter Speicherkonfiguration.

Obwohl Sie vielleicht mit großen Seitengrößen einigen Platz verschwenden, sollte das bei den heutigen Hardwarepreisen kein ernstes Problem sein und es bietet darüberhinaus höhere Leistungen.

Die einzige Möglichkeit eine Datenbank Seitengröße nachträglich zu ändern ist, einen Datenbank Backup (Sicherung) vorzunehmen, gefolgt von einem Datenbank Restore (Rücksicherung) im IBExpert Menü Systemdienste / Datenbank Restore Rücksicherung, wo die Datenbank Seitengröße neu definiert werden kann.

Siehe auch:
deutschsprachig:
Datenbank registrieren
Datenbankdesigner
Standardzeichensatz
englischsprachig:
CREATE statement
Memory configuration
CREATE DATABASE
Creating your first database

zurück zum Seitenanfang
<< Segmentgröße (Blob) | IBExpert Glossar | Sekundärdateien >>