Jak funkcje PostGIS obsługują bufory i pamięć zewnętrzną?


17

Widzę ciągle rosnącą listę nowych funkcji w PostGIS, z których niektóre obejmują GEOS(np ST_ClusterKMeans.). Niektóre funkcje (np. Te w pgrouting) zależą od innych bibliotek (np BGL.).

Mam wrażenie, że wiele z tych bazowych bibliotek (często w C / C ++) nie obsługuje zarządzania buforami między pamięcią a dodatkowymi pamięciami / pamięcią / dyskami.

Czy zatem funkcje PostGIS na nich działają na dużych zestawach danych, których nie można przechowywać w pamięci fizycznej (lub wirtualnej)?

Jeśli tak, skąd pochodzą te możliwości zarządzania buforami (z punktu widzenia implementacji)?

Odpowiedzi:


11

Nie, większość z tych funkcji „analizy wyższego rzędu” nie ma żadnej specjalnej obsługi dla zestawów danych, które są większe niż mieszczą się w pamięci. Jeśli uruchomisz je na takich zestawach danych, po prostu OOM backend.

Przez pewien czas unikaliśmy tworzenia takich funkcji, ale ponieważ pamięć RAM domyślnie się powiększała i ludzie chcieli więcej analiz, a stosunkowo niewiele z nich kiedykolwiek osiągnęło limity pamięci, równanie korzyści / wad zmieniło się na korzyść „po prostu zrób to”.

Najstarsza z tych funkcji, ST_Union () została pierwotnie zbudowana tak, aby nie była związana z pamięcią, przy (bardzo wysokim) koszcie wydajności. Nadal możesz używać oryginalnej funkcji ST_MemUnion (), która (myląco) faktycznie zużywa mniej pamięci, ponieważ „mem” oznacza „bezpieczny dla pamięci”.

Inne funkcje, takie jak ST_Buffer (), różne klastry, będą OOM, jeśli dostarczysz im wystarczającą ilość danych.


1
„Brak pamięci (OOM) to często niepożądany stan działania komputera, w którym nie można przydzielić dodatkowej pamięci do wykorzystania przez programy lub system operacyjny.” - wikipedia
Martin F
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.