Różnica między współczynnikiem wypełnienia tabeli a współczynnikiem wypełnienia indeksu


16

W Postgres można ustawić współczynnik wypełnienia zarówno dla indeksu, jak i dla tabeli. Jaka jest różnica? Jak decydować o wartości dla obu. Jakie są przypadki użycia?

Próbuję skupić relację przestrzenną na indeksie przestrzennym. Ma kilka milionów płyt. Rekordy są aktualizowane przez cały czas, choć codziennie powstaje niewiele nowych.

Przypadkiem użycia są zapytania o zakres przestrzenny. Jaka będzie dobra wartość dla współczynnika wypełnienia tabeli i / lub współczynnika wypełnienia indeksu?

Odpowiedzi:


12

Ze strony podręcznika CREATE TABLE (wyróżnienie dodane):

Współczynnik wypełnienia tabeli wynosi procent od 10 do 100. Domyślnym jest 100 (pełne pakowanie). Jeśli określono mniejszy współczynnik wypełnienia, operacje WSTAW pakują strony tabeli tylko do wskazanego procentu; pozostałe miejsce na każdej stronie jest zarezerwowane na aktualizację wierszy na tej stronie. Daje to UPDATE szansę na umieszczenie zaktualizowanej kopii wiersza na tej samej stronie co oryginał, co jest wydajniejsze niż umieszczenie jej na innej stronie. W przypadku tabeli, której wpisy nigdy nie są aktualizowane, najlepszym wyborem jest pełne pakowanie, ale w mocno zaktualizowanych tabelach odpowiednie są mniejsze współczynniki wypełnienia.

Ze strony podręcznika CREATE INDEX (wyróżnienie dodane):

Współczynnik wypełnienia indeksu to wartość procentowa, która określa stopień wypełnienia metody indeksu przy pakowaniu stron indeksu. W przypadku drzewek B strony liści są wypełniane do tego procentu podczas początkowej kompilacji indeksu, a także podczas rozszerzania indeksu po prawej stronie (największe wartości klucza). Jeśli strony zostaną następnie zapełnione, zostaną podzielone, co spowoduje stopniowe obniżenie wydajności indeksu.B-drzewa używają domyślnego współczynnika wypełnienia 90, ale można wybrać dowolną wartość od 10 do 100. Jeśli tabela jest statyczna, wówczas współczynnik wypełnienia 100 najlepiej jest zminimalizować fizyczny rozmiar indeksu, ale w przypadku mocno zaktualizowanych tabel mniejszy współczynnik wypełnienia lepiej jest zminimalizować potrzebę podziału strony. Inne metody indeksu wykorzystują współczynnik wypełnienia na różne, ale z grubsza analogiczne sposoby; domyślny współczynnik wypełnienia różni się w zależności od metody.


1
Zwyczajowo podaje się źródło cytatu. Nawet jeśli łatwo to rozgryźć.
Erwin Brandstetter,

tak,

Przepraszam, że trochę przeszkadzam. Link do aktualnej wersji instrukcji (chyba że musisz zaadresować konkretną). Redagowałem. Więcej o tym tutaj .
Erwin Brandstetter,

Linki są wsteczne.
Dave Johansen

2
Re: „Jeśli tabela jest statyczna, wówczas współczynnik wypełnienia 100 najlepiej jest zminimalizować fizyczny rozmiar indeksu, ale w przypadku mocno zaktualizowanych tabel mniejszy współczynnik wypełnienia lepiej jest zminimalizować potrzebę podziału strony”. Próbujesz zrozumieć kontekst „mocno zaktualizowanych tabel” - czy to oznacza tabelę z wartościami wierszy, które są mocno zaktualizowane, czy może może również obejmować tabele z wierszami, które są często wstawiane i / lub usuwane? Chciałem wiedzieć, czy moja tabela, z kilkoma zmianami wartości wierszy, ale obszernymi wstawkami i usunięciami, mogłaby skorzystać z niższego współczynnika wypełnienia swojego głównego (kluczowego) indeksu.
Reinsbrain
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.