In che modo le funzioni PostGIS gestiscono i buffer e la memoria esterna?


17

Vedo un elenco sempre crescente di nuove funzioni in PostGIS, alcune delle quali coinvolgono GEOS(ad esempio ST_ClusterKMeans). Alcune funzioni (ad es. Quelle in pgrouting) si basano su altre librerie (ad es BGL.).

La mia impressione è che molte di queste librerie sottostanti (spesso in C / C ++) non gestiscano la gestione dei buffer tra memoria e memorie secondarie / memoria / dischi.

Quindi le funzioni PostGIS al di sopra di esse funzionano su set di dati di grandi dimensioni che non possono essere memorizzati nella memoria fisica (o virtuale)?

In tal caso, da dove provengono queste capacità di gestione del buffer (dal punto di vista dell'implementazione)?

Risposte:


11

No, la maggior parte di queste funzioni di "analisi di ordine superiore" non ha una gestione speciale per i set di dati più grandi di quelli che possono contenere in memoria. Se li esegui su tali set di dati, OOM sarà il backend.

Per un po 'abbiamo evitato di realizzare tali funzioni, ma poiché la RAM è diventata più grande per impostazione predefinita e le persone volevano più analisi e relativamente pochi di loro hanno mai raggiunto i limiti di memoria, l'equazione vantaggi / svantaggi si è spostata a favore di "Fallo".

La più antica di queste funzioni, ST_Union () è stata originariamente costruita per non essere legata alla memoria, a spese (molto elevate) delle prestazioni. È ancora possibile utilizzare la funzione originale, ST_MemUnion (), che (in modo confuso) effettivamente utilizza meno memoria, poiché "mem" significa "memoria sicura".

Altre funzioni, come ST_Buffer (), i vari cluster, OOM se li alimenterai con dati sufficienti.


1
"La memoria insufficiente (OOM) è uno stato di funzionamento del computer spesso indesiderato in cui non è possibile allocare memoria aggiuntiva per l'utilizzo da parte dei programmi o del sistema operativo." - Wikipedia
Martin F,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.