Postgres में पुराने रिकॉर्ड्स का ऑटोमैटिक एजिंग-आउट (विलोपन)


15

क्या पोस्टग्रैज में उम्र बढ़ने के पुराने रिकॉर्ड का समर्थन करने की कोई विशेषता है?

मैं एक प्रकार की कतार के रूप में लॉगिंग के लिए पोस्टग्रेज का उपयोग करना चाहता हूं, जहां दो सप्ताह से अधिक पुराने रिकॉर्ड (लॉग इवेंट) स्वचालित रूप से हटा दिए जाते हैं।


विभाजन का उपयोग करें। सिर्फ रिकॉर्ड हटाने से डिस्क पर टेबल का आकार कम नहीं होगा।
सिवन १४'१५

@ शिवन आपकी सिफारिश नहीं मानती है कि उसका मुद्दा डिस्क का आकार है? यदि उनकी समस्या क्वेरी निष्पादन का समय है तो ऐसा लगता है कि विलोपन की तुलना में हटाना संभवतः एक सरल उत्तर हो सकता है, नहीं? (अभी भी खुद को समझने की कोशिश कर रहा है)
स्टीफनmm

1
समस्या बस यह है कि लॉग रिकॉर्ड अब एक निश्चित समय के बाद दिलचस्प नहीं हैं। पुरानी पंक्तियों को हटाने से नई ताजी पंक्तियों के लिए जगह बननी चाहिए।
तुलसी बोर्क

जवाबों:


15

समय-आधारित शासन पर स्वचालित रूप से पंक्तियों को हटाने के लिए कोई सुविधा नहीं बनाई गई है (जो मुझे पता होगा)।

आप साधारण आदेशों को शेड्यूल करने या उद्देश्य के लिए pgAgent का उपयोग करने के लिए दैनिक (आप तय करते हैं) क्रॉन-जॉब चला सकते हैं ।DELETE

या आप साप्ताहिक विभाजन के साथ विभाजन का उपयोग कर सकते हैं जो एक मास्टर टेबल से विरासत में मिलता है , इसे कॉल करने देता है log। यह बहुत सस्ते को नष्ट कर देगा : बस नवीनतम दो सप्ताह रखें और पुराने विभाजन को छोड़ दें।

मास्टर टेबल पर एक RULEया एक बनाएं जो TRIGGERINSERTs को सिस्टम समय के आधार पर चालू सप्ताह के विभाजन के लिए पुनर्निर्देशित करता है। हमेशा मास्टर टेबल पर लॉग इन करें log। समय से पहले बच्चे की टेबल बनाएं। सुनिश्चित करने के लिए कई सप्ताह पहले करें और एक साप्ताहिक क्रोन नौकरी चलाएं जो भविष्य के बच्चे की तालिकाओं को जोड़ता है ...

मैनुअल में कोड उदाहरण हैं ।
स्वचालित रूप से टेबल बनाने वाले एक plpgsql फ़ंक्शन के साथ संबंधित उत्तर:

संबंधित समाधान RULEINSERTs को पुनर्निर्देशित करता है। ट्रिगर फ़ंक्शन गतिशील रूप से वर्तमान विभाजन को लिख सकता है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.