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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 22:18:17592Durchsuche

How Much Disk Space Do NULL Values Actually Consume in PostgreSQL?

Erforderlicher Speicherplatz zum Speichern von NULL-Werten in PostgreSQL

Beim Definieren einer Spalte als nullbares Smallint wird davon ausgegangen, dass das Speichern von Werten wie 0 oder 1 2 Bytes erfordern würde . Es stellt sich jedoch die Frage: Wie viel Platz wird belegt, wenn die Spalte auf NULL gesetzt ist?

Speicheroptimierung

In PostgreSQL erfordern NULL-Werte keinen dedizierten Speicherplatz. Stattdessen wird eine Bitmap verwendet, um anzugeben, welche Spalten in einer Zeile NULL-Werte enthalten. Für jede Zeile mit einer oder mehreren Nullen wird dem Zeilenkopf eine Bitmap der entsprechenden Größe (aufgerundet auf das nächste Byte) hinzugefügt.

Überlegungen zur Datenausrichtung

Die Datenausrichtung spielt eine entscheidende Rolle Rolle bei der Speicherverwaltung. In PostgreSQL belegt der HeapTupleHeader (Zeilenkopf) 23 Bytes und Spaltendaten werden immer an Vielfachen von MAXALIGN (normalerweise 8 Bytes) ausgerichtet. Folglich ist im Zeilenkopf ein Byte Auffüllung vorhanden, das von der Null-Bitmap genutzt werden kann.

Freier Speicherplatz für kleine Tabellen

Aufgrund der oben genannten Datenausrichtung Tabellen mit up Bis zu 8 Spalten können absolut kostenlos NULL-Werte speichern. Über diese Grenze hinaus werden zusätzliche MAXALIGN-Bytes für die nächsten 64 Spalten usw. zugewiesen. Dieser zusätzliche Platz wird jedoch nur dann belegt, wenn tatsächlich Nullwerte in der Zeile vorhanden sind.

Gelöschte Spalten und Null-Bitmaps

Selbst wenn Spalten aus einer Tabelle gelöscht werden, belegen sie weiterhin etwas in der Null-Bitmap, wenn sie weiterhin im pg_attribute-Systemkatalog aufgeführt bleiben. Infolgedessen können gelöschte Spalten zum Platzbedarf für die Null-Bitmap beitragen, die auch nach VACUUM FULL-Vorgängen bestehen bleiben kann.

Fazit

NULL-Werte in PostgreSQL werden mithilfe eines Bitmap-Mechanismus effizient gespeichert . Allerdings können die Datenausrichtung und die Anzahl der Spalten in einer Tabelle Einfluss darauf haben, wie viel Speicherplatz zum Speichern dieser Werte erforderlich ist. Das Verständnis dieser Optimierungstechniken kann dazu beitragen, die Datenbankleistung zu optimieren und den Speicherbedarf zu minimieren.

Das obige ist der detaillierte Inhalt vonWie viel Speicherplatz verbrauchen 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