Müssen Postgres GIN-Indizes regelmäßig neu erstellt werden?


7

Werden sie aufgebläht wie Btree-Indizes? Wenn ja, wie kann das Aufblähen z. B. durch ein automatisiertes Neuindizierungsskript gemessen werden? Ich bin daran interessiert, die Abfrageleistung zu verbessern und Platz zu sparen.

Antworten:


3

Empirisch habe ich festgestellt, dass GIN-Indizes neu indiziert werden müssen, nachdem ich eine große Anzahl von Zeilen in die Tabelle eingefügt habe.

Ich hatte eine Tabelle mit 15 Millionen Zeilen mit einem GIN-Index, mit dem ich in weniger als 3 Sekunden eine Stichwortsuche durchführen konnte. Nachdem ich eine weitere Million Zeilen eingefügt hatte, dauerte dieselbe Suche 30 Sekunden. Ich habe einen Tag nach meinen Einfügungen gewartet, aber die Suche war immer noch langsam, also habe ich REINDEXmeinen GIN-Index manuell ausgeführt , was etwas mehr als eine Stunde dauerte, aber danach war meine Suche wieder bei 3 Sekunden.



0

Nun, es hängt ein bisschen vom Anwendungsfall ab. Die Wiederverwendung von Elementzeigern in GIN ist definitiv viel schwieriger als in einem Btree, da die Struktur auf der Ebene der Elementzeiger völlig anders ist. Mit der neuen GIN-Struktur ist das Leben noch schwieriger vorherzusagen, daher würde ich es genau beobachten - abhängig von Ihrer Art, GIN zu verwenden, ist REINDEXmöglicherweise eine erforderlich. Aber wie bereits erwähnt - harte Beweise sind hier schwer zu finden.

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.