Unterschied zwischen Tabellenfüllfaktor und Indexfüllfaktor


16

In Postgres kann man den Füllfaktor sowohl für einen Index als auch für eine Tabelle festlegen. Was ist der Unterschied? So legen Sie Werte für beide fest. Was sind die Verwendungszwecke?

Ich versuche, eine räumliche Beziehung auf einen räumlichen Index zu gruppieren. Es hat ein paar Millionen Datensätze. Die Datensätze werden ständig aktualisiert, obwohl nur sehr wenige neue täglich erstellt werden.

Der Anwendungsfall sind räumliche Bereichsabfragen. Was ist ein guter Wert für den Tabellenfüllfaktor und / oder den Indexfüllfaktor?

Antworten:


12

Auf der Manpage CREATE TABLE (Hervorhebung hinzugefügt):

Der Füllfaktor für eine Tabelle ist ein Prozentsatz zwischen 10 und 100. 100 (vollständige Verpackung) ist die Standardeinstellung. Wenn ein kleinerer Füllfaktor angegeben wird, packen INSERT-Operationen Tabellenseiten nur bis zum angegebenen Prozentsatz. Der verbleibende Platz auf jeder Seite ist für die Aktualisierung der Zeilen auf dieser Seite reserviert. Dies gibt UPDATE die Möglichkeit, die aktualisierte Kopie einer Zeile auf derselben Seite wie das Original zu platzieren. Dies ist effizienter als das Platzieren auf einer anderen Seite. Für eine Tabelle, deren Einträge niemals aktualisiert werden, ist eine vollständige Packung die beste Wahl, bei stark aktualisierten Tabellen sind jedoch kleinere Füllfaktoren angebracht.

Auf der Manpage CREATE INDEX (Hervorhebung hinzugefügt):

Der Füllfaktor für einen Index ist ein Prozentsatz, der bestimmt, wie voll die Indexmethode versucht, Indexseiten zu packen. Bei B-Bäumen werden Blattseiten während der ersten Indexerstellung und auch beim Erweitern des Index auf der rechten Seite (größte Schlüsselwerte) bis zu diesem Prozentsatz gefüllt. Wenn die Seiten anschließend vollständig gefüllt sind, werden sie aufgeteilt, was zu einer allmählichen Verschlechterung der Effizienz des Index führt.B-Bäume verwenden einen Standardfüllfaktor von 90, es kann jedoch ein beliebiger Wert von 10 bis 100 ausgewählt werden. Wenn die Tabelle statisch ist, ist der Füllfaktor 100 am besten, um die physische Größe des Index zu minimieren. Bei stark aktualisierten Tabellen ist ein kleinerer Füllfaktor jedoch besser, um die Notwendigkeit von Seitenteilen zu minimieren. Bei den anderen Indexmethoden wird der Füllfaktor auf unterschiedliche, aber ungefähr analoge Weise verwendet. Der Standardfüllfaktor variiert zwischen den Methoden.


1
Es ist üblich, die Quelle eines Zitats zu erwähnen. Auch wenn es einfach ist, es herauszufinden.
Erwin Brandstetter

yeah,

Tut mir leid, noch mehr zu nörgeln. Bitte verweisen Sie auf die aktuelle Version des Handbuchs (es sei denn, Sie müssen eine bestimmte Adresse angeben). Ich habe bearbeitet. Mehr dazu hier .
Erwin Brandstetter

Die Links sind rückwärts.
Dave Johansen

2
Betreff: "Wenn die Tabelle statisch ist, ist Füllfaktor 100 am besten, um die physische Größe des Index zu minimieren, aber für stark aktualisierte Tabellen ist ein kleinerer Füllfaktor besser, um die Notwendigkeit von Seitenteilen zu minimieren." Der Versuch, den Kontext von "stark aktualisierten Tabellen" zu verstehen - Bedeutet das, dass Tabellen mit Zeilenwerten stark aktualisiert werden, oder könnten dies auch Tabellen mit Zeilen sein, die häufig eingefügt und / oder gelöscht werden? Ich wollte wissen, ob meine Tabelle mit wenigen Änderungen an den Zeilenwerten, aber umfangreichen Einfügungen und Löschungen von einem niedrigeren Füllfaktor im Hauptindex (Schlüsselindex) profitieren könnte.
Reinsbrain
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.