Heim >Datenbank >MySQL-Tutorial >Wie viel Speicherplatz belegen NULL-Werte tatsächlich in PostgreSQL?

Wie viel Speicherplatz belegen NULL-Werte tatsächlich in PostgreSQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 10:53:14418Durchsuche

How Much Disk Space Do NULL Values Actually Use 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:

    • Kein zusätzlicher Speicherplatz
  • Für Tabellen mit 9 bis 64 Spalten:

    • 1 Byte für die Null-Bitmap
  • Für Tabellen mit mehr als 64 Spalten:

    • Mehrere Bytes für zusätzliche MAXALIGNs

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn