4 votos

¿Limita Postgres y el IO del disco el rendimiento de pgRoutings?

Estoy haciendo este estilo de preguntas y respuestas porque he hecho mi investigación en Google y no pude encontrar ningún dato de empuje y 'benchmarked'. Así que lo he hecho yo mismo.

  • ¿CPU frente a DISCO como factor "limitante" del rendimiento?
  • ¿Cómo mejorar el rendimiento mediante el ajuste de la configuración?
  • ¿Cómo mejorar el rendimiento mediante el ajuste de las consultas?

3voto

SCdF Puntos 123
  • ¿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. ramdrive vs disk - Postgres Setup ¡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)

enter image description here

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...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X