Hoihoi
Ik ben voor een klant bezig met een applicatie die data over glasvezels bijhoudt. Dit gebeurt in 2 delen, een deel met geografische data (WKT formaat) en een deel met overige informatie (eigenaar, lengte, SLA etc).
Dat laatste deel is voor dit topic niet boeiend, dat loopt prima en levert geen relevante load op.
De actionscript interface (hij is niet door mij gemaakt, maar ik ben er nu wel verantwoordelijk voor) heeft als doel de locaties van die glasvezels op een google-maps achtig ding (de kaart komt van MS) te plotten.
Prima, maar dit levert een forse (!) load op op de virtuele machine waar dit geheel op draait. Een standaard kaartview van een gemiddelde stad kan gewoon 3-4-5 minuten staan te laden. Postgres biedt deze data aan door middel van de postgis uitbreiding, wat een geografisch informatie systeem mogelijk maakt in postgres.
Ik weet niet wat er exact in die applet gebeurt, maar mijn collega (die het ding heeft gemaakt) heeft hem naar eigen zeggen redelijk geoptimaliseerd. Ik heb geen reden om hieraan te twijfelen, hij komt kundig over
.
Echter is de database hier nooit op berekend geweest en is er een gebrek aan indices, en andere optimalisaties. Ik wil niet overhaast gaan beginnen met indices aanmaken, want "eerst denken en dan doen" is een goed devies
.
Het lijkt me allereerst nuttig om uit te zoeken welke queries nou zo traag zijn (of van welke queries er heel veel zijn....). Ik zie dat ik queries kan loggen in postgresql, en daarvoor heb ik de volgende settings aangemaakt:
Hiermee kan ik log bij elkaar krijgen van welke queries ik uitvoer als ik een kaartje bekijk:
Het gaat trouwens om pgsql-8.3.
Ik ga zo eens een sessie uitvoeren waarbij ik een kaartje opvraag en dan die queries bekijken, maar hij staat nu al 2 minuten te stampen met *veel* queries die ik in de log voorbij zie komen.
Waar kan ik het beste op letten, of zijn hier best practices voor? Tevens hebbe we het hier bijna voor 100% over read-only operaties. Deadlock door rare transacties of rollbacks is niet van toepassing.
De view-mode geeft al genoeg vertraging; tegen de tijd dat die goed werkt gaan we eens kijken of de write-mode ook aan te pakken is.
Een andere database-engine is een no-go, domweg omdat we redelijk aan postgis vastzitten.
Ik ben voor een klant bezig met een applicatie die data over glasvezels bijhoudt. Dit gebeurt in 2 delen, een deel met geografische data (WKT formaat) en een deel met overige informatie (eigenaar, lengte, SLA etc).
Dat laatste deel is voor dit topic niet boeiend, dat loopt prima en levert geen relevante load op.
De actionscript interface (hij is niet door mij gemaakt, maar ik ben er nu wel verantwoordelijk voor) heeft als doel de locaties van die glasvezels op een google-maps achtig ding (de kaart komt van MS) te plotten.
Prima, maar dit levert een forse (!) load op op de virtuele machine waar dit geheel op draait. Een standaard kaartview van een gemiddelde stad kan gewoon 3-4-5 minuten staan te laden. Postgres biedt deze data aan door middel van de postgis uitbreiding, wat een geografisch informatie systeem mogelijk maakt in postgres.
Ik weet niet wat er exact in die applet gebeurt, maar mijn collega (die het ding heeft gemaakt) heeft hem naar eigen zeggen redelijk geoptimaliseerd. Ik heb geen reden om hieraan te twijfelen, hij komt kundig over
Echter is de database hier nooit op berekend geweest en is er een gebrek aan indices, en andere optimalisaties. Ik wil niet overhaast gaan beginnen met indices aanmaken, want "eerst denken en dan doen" is een goed devies
Het lijkt me allereerst nuttig om uit te zoeken welke queries nou zo traag zijn (of van welke queries er heel veel zijn....). Ik zie dat ik queries kan loggen in postgresql, en daarvoor heb ik de volgende settings aangemaakt:
code:
1
2
3
4
5
6
7
| log_duration = on log_line_prefix = '%t '# special values: log_statement = 'all'# none, ddl, mod, all track_activities = on track_counts = on update_process_title = on log_statement_stats = on |
Hiermee kan ik log bij elkaar krijgen van welke queries ik uitvoer als ik een kaartje bekijk:
Het gaat trouwens om pgsql-8.3.
Ik ga zo eens een sessie uitvoeren waarbij ik een kaartje opvraag en dan die queries bekijken, maar hij staat nu al 2 minuten te stampen met *veel* queries die ik in de log voorbij zie komen.
Waar kan ik het beste op letten, of zijn hier best practices voor? Tevens hebbe we het hier bijna voor 100% over read-only operaties. Deadlock door rare transacties of rollbacks is niet van toepassing.
De view-mode geeft al genoeg vertraging; tegen de tijd dat die goed werkt gaan we eens kijken of de write-mode ook aan te pakken is.
Een andere database-engine is een no-go, domweg omdat we redelijk aan postgis vastzitten.
[ Voor 9% gewijzigd door Boudewijn op 01-01-2010 17:04 ]