

HOT verhindert redundante Indexeiträge und gibt den Speicher von gelöschten oder nicht mehr benötigten aktualisierten Datensätzen zur Wiederverwendung frei. Anstatt für die gesamte Tabelle wird VACUUM nur für die aktuelle Speicherseite ausgeführt, dies wird auch als *Defragementierung* bezeichnet.
Bei einem UPDATE werden Datensätze in PostgreSQL nicht überschrieben, sondern es wird eine neue Version des Datensatzes eingefügt. Sind für die betreffende Tabelle Indexe definiert, werden auch dort neue Einträge eingefügt, die die neue Datensatz-Version referenzieren. So entsteht eine Versions-Historie aller aktualisierter Datensätze und gleichzeitig wachsen Tabellen und Indexe mit jedem UPDATE.
Falls Google Sie bei Ihrer Suche nach
Stölzl Consulting Unternehmensberatung GmbH
hierher geführt hat:
Sie finden diese Seite unter: http://www.stoelzl.de
Ab PostgreSQL 8.3 ändert sich dieses Verhalten: Wenn ein UPDATE keine Spalten verändert, für die ein Index definiert ist oder die an der Definition eines partiellen oder funktionalen Index beteiligt sind, schreibt PostgreSQL 8.3 keinen neuen (redundanten, weil mit demselben Schlüssel) Indexeintrag. Nicht mehr jedem Datensatz in einer Versions-Historie ist immer genau ein Eintrag im Index zugeordnet, sondern möglicherweise einer ganzen Kette (update chain) von aktualisierten Datensätzen. Heap-Only-Tupels sind solche Datensätze, die keinen *eigenen* Eintrag im Index haben. Dies führt zu kleineren Indexen und damit zu schnelleren Suchergebnissen.