PostGIS işlevleri arabellekleri ve harici depolamayı nasıl işler?


17

PostGIS'te, bazıları dahil GEOS(örneğin ST_ClusterKMeans) yeni işlevlerin giderek artan bir listesini görüyorum . Bazı işlevler (örn. İçinde olanlar pgrouting) diğer kütüphanelere (ör BGL. ) Dayanır .

Benim izlenimim (genellikle C / C ++) ile bu temel kütüphanelerin birçoğu olmasıdır yok bellek ve ikincil anılar / depolama / diskler arasındaki tamponlar yönetimini ele.

Peki üstlerindeki PostGIS işlevleri fiziksel (veya sanal) bellekte depolanamayan büyük veri kümeleri üzerinde çalışıyor mu?

Öyleyse, bu arabellek yönetimi yetenekleri nereden gelir (uygulama noktasından)?

Yanıtlar:


11

Hayır, bu "yüksek dereceli analiz" işlevlerinin çoğunun belleğe sığmayacak kadar büyük veri kümeleri için özel bir kullanımı yoktur. Bunları bu tür veri kümelerinde çalıştırırsanız, yalnızca arka uca OOM yazarsınız.

Bir süredir bu tür işlevleri yapmaktan kaçındık, ancak RAM varsayılan olarak daha büyük hale geldikçe ve insanlar daha fazla analiz istediklerinden ve nispeten azı bellek sınırlarına ulaştıkça, faydalar / dezavantajlar denklemi "sadece yap" lehine değişti.

Bu işlevlerden en eskisi olan ST_Union () başlangıçta (çok yüksek) performans pahasına hafızaya bağlı olmayacak şekilde inşa edilmiştir . "Mem ", "bellek güvenli" anlamına geldiğinden (kafa karıştırıcı olarak) aslında daha az bellek kullanan orijinal ST_MemUnion () işlevini kullanmaya devam edebilirsiniz .

ST_Buffer (), çeşitli kümeler gibi diğer işlevler, bunları yeterli veriyle beslerseniz OOM olacaktır.


1
"Bellek yetersiz (OOM), programlar veya işletim sistemi tarafından kullanılmak üzere ek bellek ayrılamayan, genellikle istenmeyen bir bilgisayar işlem durumudur." - Vikipedi
Martin F
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.