¿Cómo manejan los buffers y el almacenamiento externo las funciones de PostGIS?

17

Veo una lista cada vez mayor de nuevas funciones en PostGIS, algunas de las cuales involucran a GEOS (por ejemplo, ST_ClusterKMeans ). Algunas funciones (por ejemplo, las de pgrouting ) se basan en otras bibliotecas (por ejemplo, BGL ).

Mi impresión es que muchas de estas bibliotecas subyacentes (a menudo en C / C ++) no manejan la administración de búferes entre la memoria y las memorias secundarias / almacenamiento / discos.

¿Entonces las funciones PostGIS sobre ellas funcionan en grandes conjuntos de datos que no pueden almacenarse en la memoria física (o virtual)?

Si es así, ¿de dónde provienen estas capacidades de administración de búfer (desde el punto de vista de la implementación)?

    
pregunta tinlyx 07.01.2017 - 01:08

1 respuesta

10

No, la mayoría de estas funciones de "análisis de orden superior" no tienen un manejo especial para los conjuntos de datos que son más grandes de lo que caben en la memoria. Si los ejecuta en dichos conjuntos de datos, solo OOM el backend.

Durante un tiempo, evitamos realizar tales funciones, pero a medida que la RAM se hacía más grande por defecto y la gente quería más análisis y relativamente pocos de ellos alcanzaban los límites de la memoria, la ecuación de beneficios / inconvenientes ha cambiado a favor de "solo hazlo".

La más antigua de estas funciones, ST_Union () se creó originalmente para no estar vinculada a la memoria, a un costo (muy alto) en el rendimiento. Aún puede usar la función original, ST_MemUnion (), que (confusamente) usa la memoria menos , ya que "mem" significa "memoria segura".

Otras funciones, como ST_Buffer (), los diversos clústeres, OOM si los alimenta con suficiente información.

    
respondido por el Paul Ramsey 09.01.2017 - 17:57

Lea otras preguntas en las etiquetas