Mehr

Leistungsverbesserung von Postgres vs. PostGIS

Leistungsverbesserung von Postgres vs. PostGIS


Ich versuche, die folgende Abfrage tausendmal pro Sekunde auszuführen, um festzustellen, welches Polygon den übergebenen Punkt enthält.

SELECT * aus Bereichen WHERE poly @> ?

Poly ist der Name des Polygonfeldes und es enthält einen GIST-Index.

Ich frage mich, ob ich für diese einfache Abfrage einen Leistungsvorteil durch die Verwendung von PostGIS gegenüber dem regulären Postgress-Geodatenindex sehen würde. Ich verwende Amazon RDS, um Postgress zu hosten, und mit 3 xl-Read Replicas kann ich nur etwa 20.000 Transaktionen pro Sekunde erhalten und muss das verdreifachen. Ich habe eine Webapp, die die Anfragen an Postgres stellt. Bei 20.000 tps haben alle Postgress-Replikate 100 % CPU.


Der Index in nativem PostgreSQL ist im Grunde der gleiche wie in PostGIS (mit Ausnahme von Selektivitätsschätzungen, wo PostGIS besser ist), so dass es bei einer so einfachen Abfrage keine wirkliche Leistungsänderung gibt. Da Sie jeweils eine Punkt/Poly-Kombination testen und keine Wiederholungen desselben Polys in derselben Abfrage durchführen (wie dies bei einem räumlichen Join der Fall wäre), erhalten Sie auch keine Nutzung der PostGIS-Caching-Funktionen features . Ich würde vermuten, dass es für Ihren Anwendungsfall keinen Vorteil gibt, es sei denn, die native PostgreSQL-Point-in-Poly-Implementierung ist in irgendeiner Weise hirntot.