ฟังก์ชัน PostGIS จะจัดการกับบัฟเฟอร์และที่จัดเก็บข้อมูลภายนอกได้อย่างไร


17

ฉันเห็นรายการฟังก์ชันใหม่ที่เพิ่มมากขึ้นเรื่อย ๆ ใน PostGIS ซึ่งบางส่วนเกี่ยวข้องGEOS(เช่นST_ClusterKMeans) ฟังก์ชั่นบางอย่าง (เช่นที่อยู่ในpgrouting) พึ่งพาห้องสมุดอื่น ๆ (เช่นBGL)

ความประทับใจของฉันคือไลบรารีพื้นฐานเหล่านี้จำนวนมาก (บ่อยครั้งใน C / C ++) ไม่รองรับการจัดการบัฟเฟอร์ระหว่างหน่วยความจำและหน่วยความจำรอง / ที่เก็บ / ดิสก์

ดังนั้นฟังก์ชั่น PostGIS ด้านบนของพวกเขาทำงานบนชุดข้อมูลขนาดใหญ่ที่ไม่สามารถเก็บไว้ในหน่วยความจำทางกายภาพ (หรือเสมือน)?

ถ้าเป็นเช่นนั้นความสามารถในการจัดการบัฟเฟอร์เหล่านี้มาจากไหน (จากมุมมองของการนำไปใช้)?

คำตอบ:


11

ไม่ฟังก์ชั่น "การวิเคราะห์คำสั่งที่สูงกว่า" เหล่านี้ส่วนใหญ่ไม่มีการจัดการพิเศษสำหรับชุดข้อมูลที่มีขนาดใหญ่เกินความสามารถในหน่วยความจำ หากคุณเรียกใช้พวกเขาในชุดข้อมูลดังกล่าวคุณจะเพียงแค่ส่วนแบ็คเอนด์

ในขณะที่เราหลีกเลี่ยงการทำฟังก์ชั่นดังกล่าว แต่เมื่อ RAM มีขนาดใหญ่ขึ้นตามค่าเริ่มต้นและผู้คนต้องการการวิเคราะห์มากขึ้นและมีจำนวนไม่มากนักที่ จำกัด หน่วยความจำข้อดี / ข้อเสียของสมการ

ฟังก์ชั่นที่เก่าแก่ที่สุดของเหล่านี้คือ ST_Union () ถูกสร้างขึ้นเพื่อไม่ให้ถูกผูกไว้กับหน่วยความจำโดยมีค่าใช้จ่าย (สูงมาก) ในการทำงาน คุณยังคงสามารถใช้ฟังก์ชั่นดั้งเดิม ST_MemUnion () ซึ่ง (สับสน) ใช้หน่วยความจำน้อยกว่าเพราะ "mem" หมายถึง "ปลอดภัยหน่วยความจำ"

ฟังก์ชั่นอื่น ๆ เช่น ST_Buffer () กลุ่มต่างๆจะเป็น OOM ถ้าคุณป้อนข้อมูลด้วยข้อมูลที่เพียงพอ


1
"Out of memory (OOM) เป็นสถานะที่ไม่พึงประสงค์ของการใช้งานคอมพิวเตอร์โดยที่ไม่มีการจัดสรรหน่วยความจำเพิ่มเติมเพื่อใช้งานโดยโปรแกรมหรือระบบปฏิบัติการ" - วิกิพีเดีย
Martin F
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.