Postgres hstore: GIN vs GiST-Indexleistung

10

Ich muss entscheiden, ob ich die GIN- oder GiST-Indizierung für eine Hstore-Spalte verwenden möchte.

Die Postgres-Dokumentation lautet:

  • GIN-Index-Lookups sind etwa dreimal schneller als GiST
  • GIN-Indizes benötigen etwa drei Mal länger als GiST
  • GIN-Indizes sind etwa zehnmal langsamer zu aktualisieren als GiST
  • GIN-Indizes sind zwei- bis dreimal größer als GiST

Wie ich es interpretiere, benutze GIN, wenn du viel abfragen musst, benutze GiST, wenn du viel aktualisieren musst.

In diesem Test finden Sie alle drei Nachteile von GIN gegenüber GiST oben erwähnt werden bestätigt. Anders als in den Postgres-Dokumenten vorgeschlagen, ist der Vorteil von GIN gegenüber GiST (schnelleres Nachschlagen) jedoch sehr gering. Folie 53 zeigt, dass die GIN im Test nur 2% bis 3% schneller war, im Gegensatz zu 200% bis 300%, die in den Postgres-Dokumenten vorgeschlagen wurden.

Welche Informationsquelle ist zuverlässiger und warum?

    
migu 06.12.2013, 05:48
quelle

1 Antwort

4

Die Dokumente geben an, wie die Situation "im Allgemeinen" aussieht.

Sie führen PostgreSQL jedoch nicht "im Allgemeinen", sondern auf einer bestimmten Hardware mit einem bestimmten Nutzungsmuster.

Also - wenn Sie sich viel Sorgen machen, dann sollten Sie es selbst testen. Ein GiST-Index muss immer seine Bedingung erneut überprüfen. Wenn die von Ihnen ausgeführten Abfragen jedoch trotzdem weitere Prüfungen durchführen, kann ein GIN-Index dort möglicherweise nicht gewinnen. Außerdem gibt es alle üblichen Probleme bei der Cache-Nutzung etc.

Für meine Verwendung in kleineren Datenbanken mit moderaten Aktualisierungsraten war ich mit GiST glücklich genug. Ich habe eine Geschwindigkeitsverbesserung von 50% mit GIN (über eine ganze Abfrage hinweg) gesehen, aber die langsamere Indexierung hat sich nicht gelohnt. Wenn ich einen riesigen Archivserver erstellen würde, könnte es anders sein.

    
Richard Huxton 06.12.2013, 09:21
quelle