- ¿CPU vs DISCO como factor de rendimiento "limitante"?
Para hacer un benchmark de esto, configuré UN servidor con 2 DBs. Una con el tablespace por defecto y la otra con un tablespace 'RAMDISK'. Utilicé 12GB de ram en total y una unidad de 6GB de ramdrive. ¡Y como se puede ver, no hay ninguna diferencia en el rendimiento en la configuración de la base de datos de disco vs ramdrive! (Esto se hizo en +- fuera de la caja Postgres.conf)
- ¿Cómo mejorar el rendimiento mediante el ajuste de la configuración?
No voy a explicar más este punto, hay varios buenos tutoriales en la interweb. http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
- ¿Cómo mejorar el rendimiento mediante el ajuste de las consultas?
Eliminar la sobrecarga de datos. Por ejemplo, si estás haciendo un análisis alrededor de una gran ciudad, como Berlín, probablemente no necesites los datos de París.
Ejemplo:
Simple Select on ALL vertices
SELECT pgr_drivingDistance('SELECT gid as id, source, target, reverse_cost as cost FROM (SELECT gid, source, target, reverse_cost, the_geom FROM ways WHERE ST_contains(ST_Transform(ST_Buffer(ST_Transform(ST_SetSRID(ST_MakePoint(6.61098253042881, 46.5210409863285),4326), 26986), 50 * 1000 ,16), 4326), the_geom)=''t'') as preSelection',
pgr_pointtoid(ST_setSRID(ST_MakePoint(6.61098253042881, 46.5210409863285),4326), 0.1, 'ways_vertices_pgr' ,4326)::Integer, 50 , false, false)
Here with a preselection... I improved that later, but the buffer 'precalculation' hurts performance a little, and makes results 'less impressiv'
SELECT pgr_drivingDistance('SELECT gid as id, source, target, reverse_cost as cost FROM ways',
pgr_pointtoid(ST_setSRID(ST_MakePoint(6.61098253042881, 46.5210409863285),4326), 0.1, 'ways_vertices_pgr' ,4326)::Integer, 50 , false, false)
2,2s frente a 1,5s es un cambio enorme, sólo ajustando UNA consulta...
¡Siéntase libre de dejar cualquier aporte! Espero haber aclarado algunas "primeras ideas" sobre el ajuste del rendimiento de pgRouting...