Dienstag, Januar 19, 2016

Indizes und Inittrans

Zur Ablenkung hat Richard Foote zuletzt einen Artikel abgeschlossen, in dem er sich mit der Rolle des inittrans-Attributs für Tabellen und Indizes auseinandersetzt. Grundsätzlich bestimmt dieses Attribut, wie viele Transaktions-Slots initial in der ITL (= Interested Transaction List) eines Tabellen-, Index- oder Cluster-Blocks bereitgestellt werden - und jede Operation, die eine Änderung an einem Block durchführen will, muss sich in einen solchen Slot eintragen. Für Tabellen-Blocks kann das Fehlen eines solchen Slots zu hängenden Transaktionen führen, da im Extremfall erst darauf gewartet werden muss, dass ein Slot von einer anderen Transaktion freigegeben wird. Dieses Verhalten zeigt der Herr Foote anhand eines Beispiels, in dem der PCTFREE-Wert eines Objekts auf 0 gesetzt wird, so dass sehr dicht gepackte Blöcke entstehen, in denen die ITL nicht wachsen kann. Außerdem erscheinen in diesem Beispiel die üblichen Block-Dumps und Tabellennamen ziggy und bowie, die erklären, wovon sich der Autor gerade ablenken muss... Für Indizes sieht der Fall anders aus. Wenn man dort einen dicht gepackten Index-Block erzeugt, führt das Auftreten neuer Transaktionen zu einem 50:50-Block-Split, was im Zweifel gegenüber hängenden Transaktionen vorzuziehen sein dürfte. Mir fällt in diesem Zusammenhang noch ein, dass Jonathan Lewis gelegentlich darüber geschrieben hat, dass die beim Split in den entstehenden Blocks auftretenden ITLs zu massiver Platzverschwendung führen können. Gelegentlich könnte ich überprüfen, ob sich an diesem Verhalten in jüngeren Releases etwas geändert hat.

Keine Kommentare:

Kommentar veröffentlichen