Làm thế nào để các chức năng PostGIS xử lý bộ đệm và lưu trữ bên ngoài?


17

Tôi thấy một danh sách ngày càng tăng các chức năng mới trong PostGIS, một số trong đó liên quan GEOS(ví dụ ST_ClusterKMeans). Một số chức năng (ví dụ: những người trong pgrouting) dựa vào các thư viện khác (ví dụ BGL).

Ấn tượng của tôi là nhiều thư viện cơ bản này (thường trong C / C ++) không xử lý việc quản lý bộ đệm giữa bộ nhớ và bộ nhớ / lưu trữ / đĩa phụ.

Vì vậy, các hàm PostGIS trên đầu chúng có hoạt động trên các tập dữ liệu lớn không thể được lưu trữ trong bộ nhớ vật lý (hoặc ảo) không?

Nếu vậy, các khả năng quản lý bộ đệm này đến từ đâu (từ quan điểm thực hiện)?

Câu trả lời:


11

Không, hầu hết các hàm "phân tích bậc cao" này không có bất kỳ xử lý đặc biệt nào cho các tập dữ liệu lớn hơn có thể vừa với bộ nhớ. Nếu bạn chạy chúng trên các tập dữ liệu như vậy, bạn sẽ chỉ OOM phần phụ trợ.

Trong một thời gian, chúng tôi đã tránh thực hiện các chức năng như vậy, nhưng theo mặc định, RAM đã lớn hơn và mọi người muốn phân tích nhiều hơn và tương đối ít trong số chúng từng đạt giới hạn bộ nhớ, phương trình lợi ích / hạn chế đã thay đổi theo hướng "chỉ cần làm điều đó".

Các chức năng lâu đời nhất trong số này, ST_Union () ban đầu được xây dựng để không bị giới hạn bộ nhớ, với chi phí (rất cao) trong hiệu suất. Bạn vẫn có thể sử dụng hàm ban đầu, ST_MemUnion (), mà (thật khó hiểu) thực sự sử dụng ít bộ nhớ hơn , vì "mem" có nghĩa là "an toàn bộ nhớ".

Các hàm khác, như ST_Buffer (), các cụm khác nhau, sẽ OOM nếu bạn cung cấp cho chúng đủ dữ liệu.


1
"Hết bộ nhớ (OOM) là trạng thái hoạt động thường xuyên không mong muốn của máy tính trong đó không có bộ nhớ bổ sung nào có thể được phân bổ để sử dụng bởi các chương trình hoặc hệ điều hành." - wikipedia
Martin F
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.