Heim >Datenbank >MySQL-Tutorial >Wie viel Speicherplatz belegen NULL-Werte tatsächlich in PostgreSQL?
Speicherplatzanforderungen für NULL-Werte in PostgreSQL
Beim Erstellen einer Datenbanktabelle ist es wichtig, insbesondere die Speicheranforderungen ihrer Spalten zu berücksichtigen beim Umgang mit nullbaren Werten. Wenn Sie verstehen, wie NULL-Werte gespeichert werden, können Sie die Speicherplatznutzung optimieren.
Speicherung von NULL-Werten
In PostgreSQL werden NULL-Werte mithilfe einer Bitmaske dargestellt, die als Null-Bitmap bezeichnet wird . Jedes Bit in der Bitmap entspricht einer Spalte in der Tabelle. Wenn ein Bit auf 1 gesetzt ist, zeigt es an, dass die entsprechende Spalte NULL ist.
Durch NULL-Bitmaps belegter Speicherplatz
Die Größe der Null-Bitmap hängt von der ab Anzahl der Spalten in der Tabelle. Bei Tabellen mit 8 oder weniger Spalten belegt die Bitmap 1 Byte. Bei Tabellen mit 9 bis 64 Spalten belegt es 2 Bytes usw. Aufgrund der Datenausrichtung beträgt der Mindestspeicherbedarf für eine Zeile, die mindestens einen NULL-Wert enthält, jedoch 1 Byte, unabhängig von der Anzahl der Spalten.
Overhead für NULL-Spalten
Außer der Null-Bitmap sind keine zusätzlichen Bytes für die Verwaltung von NULL-Spalten erforderlich. Allerdings belegen gelöschte Spalten, die im Systemkatalog pg_attribute als „dropped“ markiert sind, immer noch ein Bit in der Null-Bitmap. Dieser Overhead kann bestehen bleiben, bis ein Dump-/Wiederherstellungszyklus durchgeführt wird.
Beispiel und Testergebnisse
Betrachten Sie eine Tabelle mit der folgenden Spaltendefinition:
"MyColumn" smallint NULL
Das Speichern eines Werts von 0 oder 1 in dieser Spalte würde 2 Bytes erfordern. Für NULL-Werte gelten die folgenden Speicheranforderungen:
Für Tabellen mit 8 oder weniger Spalten:
Für Tabellen mit 9 bis 64 Spalten:
Für Tabellen mit mehr als 64 Spalten:
Umfangreiche Tests zeigen, dass diese Speicheranforderungen für alle Tabellen konsistent sind. Die Optimierung der Speicherplatznutzung durch das Speichern von NULL-Werten in kleinen Tabellen (weniger als 9 Spalten) ist vorteilhaft, während sie in größeren Tabellen weniger wichtig ist.
Das obige ist der detaillierte Inhalt vonWie viel Speicherplatz belegen NULL-Werte tatsächlich in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!