Як функції PostGIS обробляють буфери та зовнішні сховища?


17

Я бачу постійно зростаючий перелік нових функцій у PostGIS, деякі з яких включають GEOS(наприклад ST_ClusterKMeans). Деякі функції (наприклад, вбудовані pgrouting) покладаються на інші бібліотеки (наприклад, BGL).

Моє враження, що багато з цих базових бібліотек (найчастіше на C / C ++) не обробляють управління буферами між пам'яттю та вторинними запам'ятовувачами / зберіганням / дисками.

Тож чи функціонують функції PostGIS поверх них на великих наборах даних, які неможливо зберігати у фізичній (або віртуальній) пам'яті?

Якщо так, звідки беруться ці можливості управління буфером (з точки зору реалізації)?

Відповіді:


11

Ні, більшість цих функцій "аналізу більш високого порядку" не мають спеціальних оброблень для наборів даних, які перевищують вміст у пам'яті. Якщо ви запускаєте їх на таких наборах даних, ви просто будете OOM заднім числом.

На деякий час ми уникали таких функцій, але оскільки за замовчуванням збільшилася оперативна пам’ять, і люди хотіли більше аналізу, і порівняно небагато з них коли-небудь потрапляло до меж пам'яті, рівняння переваг / недоліків змістилося на користь "просто зроби це".

Найдавніша з цих функцій ST_Union () спочатку була побудована так, щоб вона не була пов'язана з пам'яттю, за (дуже високі) витрати на продуктивність. Ви все ще можете використовувати оригінальну функцію ST_MemUnion (), яка (заплутано) фактично використовує менше пам’яті, оскільки «mem» означає «безпечну пам’ять».

Інші функції, такі як ST_Buffer (), різні кластери, будуть OOM, якщо ви будете годувати їх достатньою кількістю даних.


1
"Немає пам'яті (OOM) - це часто небажаний стан роботи комп'ютера, коли додаткова пам'ять не може бути виділена для використання програмами або операційною системою." - wikipedia
Мартін Ф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.