Deutliche Reduzierung der Satzanzahl einer Tabelle mit Text und BYTE im Tablespace
(Beitrag von CURSOR Mitarbeiter Andreas Seifert)
Normalerweise sind die Limitierungen für Tabellen in einer Informix-Instanz ausreichend hoch, so das man keine Probleme beim Betrieb der Instanz bekommt. Nutzt man die alten Simple Large Objects TEXT und BYTE in Informix ist das aber anders. Diese BLOBs können noch nicht in einem Smart-Blobspace liegen, wie die neuen Smart Large Objects sondern müssen in einen Blobspace (alter Typ).
Im Gegensatz zu Smart-Blobspaces können Blobspaces aber nicht mit Logging angelegt werden. Das hat große Nachteile, wenn man eine Hochverfügbarkeitslösung wie HDR, RSS oder SDS nutzen möchte. Da alle diese Lösungen über den Austausch von logical Log-Informationen funktionieren, werden Objekte die nicht über das log. Log laufen nicht repliziert.
Die einzige Lösung, die Simple Large Objects mit log. Log zu betreiben ist, auf einen Blobspace zu verzichten und die BLOBs in den Tablespace zu speichern.
Jetzt kommen aber die die Tabellen-Limits von Informix zum Tragen. Eine Row darf 32kByte lang werden. Das ist in diesem Fall kein problematisches Limit, weil für ein Simple Large Object in die Row-Size nur ein Descriptor von 56Byte eingeht. Ein weiteres Limit, die maximale Anzahl Pages pro Fragment, ist hier wesentlich tragischer. Dieses Limit liegt nämlich bei 16.777.215 Daten-Pages. Die Frage ist, zählen die Pages, die ein Simple Large Object belegt dazu?
Die Dokumentation von Informix schweigt hierzu. Um zu ermitteln, ob die Blob-Pages zu den Daten-Pages zählen, haben wir ein 100GB großen Chunk angelegt. Plattform war Windows mit 4k Pagesize. In einer Schleife wurden in die Tabelle mit 2 Feldern vom Typ TEXT Sätze mit durchschnittlich 300kByte an Daten eingefügt. Die Frage war - bei wieviel Sätzen ist Schluß?