Postgresql 8.3: จำกัด การใช้ทรัพยากรต่อแบบสอบถาม


12

ฉันใช้PostgreSQL 8.3 + PostGIS 1.3ในการจัดเก็บข้อมูลเชิงพื้นที่ในอูบุนตู 8.04 Hardy

PostGIS รุ่นนี้มีข้อผิดพลาดเมื่อทำการคำนวณbuffer()บนเซ็กเมนต์ที่ซับซ้อนมากซึ่งทำให้เคียวรีใช้หน่วยความจำมากขึ้นเรื่อย ๆ จนกว่าเครื่องทั้งหมดจะติด

ฉันกำลังมองหากลไก PostgreSQL ที่สามารถ:

  • จำกัด การใช้หน่วยความจำ (และอาจเป็นทรัพยากรอื่น ๆ ) ที่ใช้โดยแบบสอบถามที่เฉพาะเจาะจง
  • หยุดคิวรีที่มีเวลาดำเนินการเกินเกณฑ์ที่กำหนดโดยอัตโนมัติ

ความคิดใด ๆ


ทำไมคุณยังคงใช้เวอร์ชันที่มีข้อบกพร่องที่กัดคุณอยู่? ใช้เวอร์ชันที่แก้ไขแล้วและปัญหาของคุณหมดไป
Frank Heikens

จริง แต่บางครั้งมีข้อบกพร่องในรหัสของเราหรือเพียงแค่การสืบค้นที่ต้องใช้เวลานานมาก ฉันต้องการให้พวกเขาตายด้วยข้อความแสดงข้อผิดพลาด
Adam Matan

คำตอบ:


9

work_memการใช้หน่วยความจำวงเงินที่กำหนดค่าพารามิเตอร์หลักคือ เนื่องจากการดำเนินการนี้ใช้สำหรับการดำเนินการไม่ใช่ต่อการสืบค้นคุณจึงไม่สามารถตั้งค่าเป็น N หากคุณต้องการใช้หน่วยความจำ N ปริมาณ แต่คุณต้องปรับแต่งและปรับแต่งเล็กน้อยเพื่อให้ได้ผลลัพธ์ที่ต้องการ

อย่างไรก็ตามวิธีนี้ไม่ได้ช่วยในกรณีที่มีข้อบกพร่องและการรั่วไหลของหน่วยความจำอื่น ๆ ในรหัสเซิร์ฟเวอร์หรือส่วนขยาย คุณสามารถควบคุมได้ว่ามีกระบวนการเฉพาะข้อ จำกัด ulimitของทรัพยากรควบคุมโดย แต่ถ้าคุณถึงขีด จำกัด และการจัดสรรหน่วยความจำล้มเหลวคุณต้องการเกิดอะไรขึ้น? มันอาจจะไม่ทำงานอย่างดีเกินไป ดีกว่าแก้ไขข้อบกพร่องเหล่านั้นหรือใช้รุ่นที่แตกต่างกัน

แบบสอบถามหยุดที่เวลาดำเนินการผ่านเกณฑ์ใช้พารามิเตอร์ `statement_timeout 'เช่น

SET statement_timeout TO '10min';

ยิ่งใหญ่ สิ่งที่ฉันกำลังมองหา
Adam Matan

2

ไปดูPostgres Wiki :

PostgreSQL ไม่มีเครื่องมืออำนวยความสะดวกในการ จำกัด ทรัพยากรที่ผู้ใช้แบบสอบถามหรือฐานข้อมูลเฉพาะหรือใช้เพื่อกำหนดลำดับความสำคัญที่ผู้ใช้ / แบบสอบถาม / ฐานข้อมูลหนึ่งได้รับทรัพยากรมากกว่าทรัพยากรอื่น ๆ จำเป็นต้องใช้สิ่งอำนวยความสะดวกของระบบปฏิบัติการเพื่อให้ได้รับความสำคัญที่ จำกัด

คุณสามารถปรับการตั้งค่าประสิทธิภาพในการใช้งานต่อผู้ใช้หรือต่อฐานข้อมูล แต่ไม่ควรยกเลิกเมื่อมีการสอบถาม


+1 แล้วการตั้งค่าสูงสุดของจำนวนหน่วยความจำที่ทั้งคลัสเตอร์สามารถกินได้
Adam Matan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.