Brunswick Geschrieben 27. Januar 2004 Geschrieben 27. Januar 2004 Weiß zufällig jmd, wieviel Bytes Oracle benötigt, um einen NULL-Wert zu speichern?
Pinhead Geschrieben 27. Januar 2004 Geschrieben 27. Januar 2004 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.
OracleFan Geschrieben 27. Januar 2004 Geschrieben 27. Januar 2004 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
Brunswick Geschrieben 27. Januar 2004 Autor Geschrieben 27. Januar 2004 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').
OracleFan Geschrieben 27. Januar 2004 Geschrieben 27. Januar 2004 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
mme Geschrieben 27. Januar 2004 Geschrieben 27. Januar 2004 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.
OracleFan Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 Habe angenommen das das klar ist. Aber du hast natürlich recht. Grüße
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden