मैं अपने डेटाबेस को आक्रामक रूप से ऑटो वैक्यूम करने के लिए PostgreSQL प्राप्त करने की कोशिश कर रहा हूं। मैंने वर्तमान में ऑटो वैक्यूम को निम्न प्रकार से कॉन्फ़िगर किया है:
- autovacuum_vacuum_cost_delay = 0 # लागत आधारित वैक्यूम बंद करें
- autovacuum_vacuum_cost_limit = 10000 # मान
- autovacuum_vacuum_threshold = 50 # मूल्य मान
- autovacuum_vacuum_scale_factor = 0.2 # मूल्य मान
मैं ध्यान देता हूं कि जब डेटाबेस लोड के अधीन नहीं होता है, तो ऑटो वैक्यूम केवल किक करता है, इसलिए मैं उन स्थितियों में पहुंच जाता हूं जहां जीवित ट्यूपल्स की तुलना में कहीं अधिक मृत ट्यूपल हैं। उदाहरण के लिए संलग्न स्क्रीनशॉट देखें। तालिकाओं में से एक में 23 जीवित टुपल्स हैं लेकिन वैक्यूम के इंतजार में 16845 मृत टुपल्स हैं। यह पागलपन है!
जब टेस्ट रन समाप्त हो जाता है और डेटाबेस सर्वर निष्क्रिय हो जाता है, तो ऑटो वैक्यूम किक करता है, जो कि मैं वैसा नहीं चाहता, जैसा कि मैं चाहता हूं कि जब भी मृत टुपल्स की संख्या 20% से अधिक हो जाए, तो डेटाबेस को किक के रूप में ऑटो वैक्यूम को किक करना होगा। कॉन्फ़िगर किया गया। सर्वर के बेकार होने पर ऑटो वैक्यूम मेरे लिए बेकार है, क्योंकि प्रोडक्शन सर्वर को निरंतर अवधि के लिए अपडेट / सेकेंड के हिट होने की उम्मीद है, यही वजह है कि सर्वर के लोड होने पर भी मुझे ऑटो वैक्यूम चलाने की आवश्यकता होती है।
क्या ऐसा कुछ है जो मुझे याद आ रहा है? मैं ऑटो वैक्यूम को चलाने के लिए कैसे मजबूर करूं, जबकि सर्वर भारी लोड के तहत है?
अपडेट करें
क्या यह लॉकिंग मुद्दा हो सकता है? विचाराधीन तालिकाएं सारांश तालिकाएं हैं जो एक सम्मिलित आवेषण ट्रिगर के माध्यम से पॉपुलेटेड हैं। समान तालिकाओं को एक ही पंक्ति में रोकने के लिए इन तालिकाओं को SHAR ROW EXCLUSIVE मोड में बंद किया जाता है।