Brunswick Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Weiß zufällig jmd, wieviel Bytes Oracle benötigt, um einen NULL-Wert zu speichern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 27. Januar 2004 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OracleFan Geschrieben 27. Januar 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brunswick Geschrieben 27. Januar 2004 Autor Teilen 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'). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brunswick Geschrieben 27. Januar 2004 Autor Teilen Geschrieben 27. Januar 2004 ok, thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OracleFan Geschrieben 27. Januar 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 27. Januar 2004 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OracleFan Geschrieben 28. Januar 2004 Teilen Geschrieben 28. Januar 2004 Habe angenommen das das klar ist. Aber du hast natürlich recht. Grüße Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.