[Talk-de] Performanceprobleme bei Mapnik/SQL

Stephan Wolff s.wolff at web.de
So Feb 6 02:59:21 UTC 2011


Moin!

Am 01.02.2011 19:41, schrieb Frederik Ramm:
> Stephan Wolff wrote:
>> Der von mir erstellten Regeln führen leider zu sehr sehr langen
>> Renderzeiten.
>
> [...] Ausserdem hat die Standard-Datenbank
> auch keine Indexe ausser dem geografischen; Deine Abfragen sind ja oft:
>
> select "haufen krimskrams" from planet_osm_line where power="line"
>
> da wird dann ueber den GIN-Index alles rausgesucht, was in dem geogr.
> Bereich ist, und per table scan dann jede einzelne Linie angechaut, ob
> sie vielleicht power=line hat.

Ich hatte vermutet, dass meine verschachtelten Abfragen Schuld sind, 
aber Frederik hat mit dieser Beschreibung die Hauptursache getroffen.
Ich habe den Zeitbedarf verschiedener SQL-Abfragen für größere Bereiche
verglichen. Eine einfache Abfrage aller Punkte mit "power=generator"

$ time psql -c "select count(*) from planet_point where power=generator 
and way && <bounding_box> ...

benötigte in meinem Testbereich etwa 2,5 Minuten. Komplexe, 
geschachtelte select-Anweisungen

$ time psql -c "select sum(output) from (select "haufen krimskrams" from 
planet_point where power=generator and way && <bounding_box> ...

waren nur wenige Sekunden langsamer. Auch die Position des geogr.
Filters in der inneren oder in der äußeren select-Anweisung machten
keinen Unterschied.

Somit bleibt zur Beschleunigung nur die Möglichkeit, eine eigene
Datenbank vorab anzulegen. Kann man Osm2pgsql so konfigurieren,
dass eine weitere Tabelle mitgepflegt wird oder muss man in
regelmäßigen Abständen die gesamte Hauptdatenbank filtern?

Vielen Dank auch an meinen Namensvetter Stephan und Tim für die
hilfreichen Kommentare. Jetzt verstehe ich besser, wie Mapnik die
Karten rendert.

Viele Grüße, Stephan







Mehr Informationen über die Mailingliste Talk-de