27. Januar 200422 j Weiß zufällig jmd, wieviel Bytes Oracle benötigt, um einen NULL-Wert zu speichern?
27. Januar 200422 j Ich weiß es ja nicht 100%ig aber ich denke mal das das keinen Platz einnimmt. Weil null ist ja nicht initialisierter Speicher und da braucht man dann auch keine Bytes für.
27. Januar 200422 j Es wir kein Speicher verbraucht. Da Oracle blöckeweise schreibt, wird für das null-Attribut wenn es nicht belegt ist auch kein Speicher freigehalten. Alledings verwendet Oracle den PCTFREE-Bereich eines Blockes bei Updates und die Werte des Null-Wertes nach dem Update einzutragen. Dies soll Rowchaining verhindern. Chained Rows sind sehr unerwünscht, da sie Performance verbrauchen, da mehr als ein Block in den Buffer geladen werden müßen um einen Datensatz auszulesen. Um Chained Rows zu indetifiziren kannst du das Skript ldblkchn.sql verwenden das Oracle beiliegt. Kleiner Exkurs in DB-Administration, aber vielleicht helfen dir die Infos mal. Grüße
27. Januar 200422 j Aber soweit ich weiß gibts doch nen Platzhalter, sofen NULL nicht am Satzende auftritt, sondern im weiteren Verlauf des Satzes noch Datenwerte folgen (z.B Spalte 4 NULL, , Spalte5 NULL, Spalte6 'MÜLLER').
27. Januar 200422 j Nein das ist nicht korrekt. Der Block hat sowas wie einen Header in dem er die Attribute verzeichnet. Daten werden aber nicht verzeichnet. Du kannst die Größe eines Attribus mit select vsize(attribut) from tabelle feststellen. Wenn du das auf einen nicht gefüllten Null-Wert machst, wirst du sehen das du nicht erhälst. auch kein 0 Bytes da der Datensatz einfach noch nicht im Block geschrieben ist. Grüße
27. Januar 200422 j Original geschrieben von OracleFan Alledings verwendet Oracle den PCTFREE-Bereich eines Blockes bei Updates und die Werte des Null-Wertes nach dem Update einzutragen. Dies soll Rowchaining verhindern. Grüße Beachte aber das der PCTFREE-Wert nicht davon abhängt wie viele Felder in dem Datensatz mit Null sind, sonder nur von dem Wert der für die ganze Tabelle definiert wurde. D.h. ist ein Datensatz komplett gefüllt (alle Columns haben Werte) ist der freigehaltene Platz für änderungen genauso groß wie bei einem Datensatz der gleichen Tabelle wo nur eine Column gefüllt wurde.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.