

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.
PostgreSQL ist ein objektrelationales Datenbankmanagementsystem (ORDBMS), das als Open-Source-Programm auf der Seite http://www.postgresql.org kostenlos zum Herunterladen angeboten wird. Es darf sowohl für den privaten als auch komerziellen Gebrauch ohne Lizensierung benutzt werden.
Ursprünglich wurde POSTGRES als universitäres Projekt an der University of California at Berkeley Computer Science Department entwickelt. Seither wird von vielen Entwicklern auf der ganzen Welt freiwillig an diesem Code weitergearbeitet. Mit der Implementierung des SQL92-Standards bekam das Programm 1996 den Namen PostgreSQL.
Es wird zu Recht als "das fortschrittlichste Open-Source-Datenbanksystem" bezeichnet. PostgreSQL unterstützt die SQL92 und SQL99 Standards und darüberhinaus bietet es eine Reihe eigener Erweiterungen an.
Als objektrelationales Datenbanksystem implementiert PostgreSQL die Speicherung nicht atomarer Datentypen sowie Vererbung oder Objektidentitäten und erlaubt Benutzern, das System um selbstdefinierte Datentypen, Operatoren und Funktionen zu erweitern. Die Unterstützung der referentiellen Integrität und ein fortschrittliches Transaktionsmanagement gehören ebenso zu den Leistungsmerkmalen von PostgreSQL, wie die Definition von Triggern und Regeln, mit denen Zugriffe auf Datenbankobjekte gesteuert werden können.
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.