Postgres มีคุณสมบัติใด ๆ เพื่อรองรับระเบียนเก่าที่ล้าสมัยหรือไม่?
ฉันต้องการใช้ Postgres สำหรับบันทึกเป็นคิวซึ่งบันทึก (เหตุการณ์บันทึก) ที่เก่ากว่าสองสัปดาห์ถูกลบโดยอัตโนมัติ
Postgres มีคุณสมบัติใด ๆ เพื่อรองรับระเบียนเก่าที่ล้าสมัยหรือไม่?
ฉันต้องการใช้ Postgres สำหรับบันทึกเป็นคิวซึ่งบันทึก (เหตุการณ์บันทึก) ที่เก่ากว่าสองสัปดาห์ถูกลบโดยอัตโนมัติ
คำตอบ:
ไม่มีคุณสมบัติในตัวในการลบแถวโดยอัตโนมัติในระบอบการปกครองตามเวลา (ที่ฉันรู้)
คุณสามารถเรียกใช้รายวัน (คุณตัดสินใจ) cron-jobเพื่อกำหนดเวลาDELETE
คำสั่งง่ายๆหรือใช้pgAgentเพื่อวัตถุประสงค์
หรือคุณอาจจะใช้การแบ่งพาร์ติชันรายสัปดาห์ที่สืบทอดจากตารางต้นแบบที่log
ช่วยให้เรียกว่า นั่นจะทำให้การลบถูกมาก : เพียงแค่เก็บสองสัปดาห์ล่าสุดและวางพาร์ติชันที่เก่ากว่า
สร้างRULE
หรือTRIGGER
บนตารางต้นแบบที่เปลี่ยนเส้นทาง INSERT ไปยังพาร์ติชันของสัปดาห์ปัจจุบันโดยยึดตามเวลาระบบ เข้าสู่ตารางหลักlog
เสมอ สร้างตารางลูกล่วงหน้า ทำให้หลายสัปดาห์ข้างหน้าเพื่อให้แน่ใจและทำงาน cron ประจำสัปดาห์ที่เพิ่มตารางลูกในอนาคต ...
มีตัวอย่างโค้ดในคู่มือ
คำตอบที่เกี่ยวข้องกับฟังก์ชัน plpgsql สร้างตารางโดยอัตโนมัติ:
โซลูชันที่เกี่ยวข้องจะสร้างการRULE
เปลี่ยนเส้นทาง INSERT อีกครั้ง ฟังก์ชันทริกเกอร์สามารถเขียนไปยังพาร์ติชันปัจจุบันได้แบบไดนามิก ...