मुझे नहीं लगता कि आपको मैन्युअल रूप से वैक्यूम करने की आवश्यकता है, जब तक कि आप प्रदर्शन में गिरावट नहीं देखना शुरू करते हैं। हालाँकि, मैं आपके वैक्यूम और ऑटोवैक्युम सेटिंग्स की समीक्षा करने और इसे अपनी आवश्यकताओं के अनुरूप करने की जोरदार सिफारिश करूंगा
अपनी वर्तमान सेटिंग देखने के लिए, यह क्वेरी चलाएँ:
SELECT *
FROM pg_settings
WHERE name LIKE '%vacuum%'
अधिकांश क्षेत्र आत्म-व्याख्यात्मक हैं, लेकिन यहाँ उन पर प्रलेखन है:
https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html
मैं कहूंगा, कि आपका लक्ष्य लगातार कचरा साफ करने के लिए ऑटोवैक्यूम को कॉन्फ़िगर करना होना चाहिए, लेकिन ऑटोवैक्युम को लगातार न चलाएं
सबसे महत्वपूर्ण सेटिंग्स हैं:
- autovacuum_vacuum_scale_factor - उन टुपल्स का प्रतिशत निर्धारित करता है जो एक सफाई शुरू होने से पहले मृत हो सकते हैं। डिफ़ॉल्ट मान = 0.2
- autovacuum_vacuum_threshold - सफाई शुरू होने से पहले मृत ट्यूपल्स की न्यूनतम संख्या। डिफ़ॉल्ट मान = 50
थ्रेसहोल्ड सफाई की प्रक्रिया को रोकने के लिए मदद करता है जिस तरह से अक्सर छोटे तालिकाओं के लिए ट्रिगर किया जाता है।
डिफ़ॉल्ट सेटिंग्स ठीक काम करती हैं, जब तक कि आपके पास बहुत बड़ी टेबल न हों। सीधे शब्दों में कहें, अगर आपके पास टेबल है जो 100GB लेता है, तो आप 20GB कचरा जमा करने जा रहे हैं, इससे पहले कि ऑटोवैक्लम ट्रिगर हो जाएगा। इस प्रकार, मैं आमतौर पर स्केल फैक्टर को कम करने की सलाह देता हूं। आपको अपने लिए कितना कम निर्धारित करना चाहिए। मैं अपने वर्तमान प्रोजेक्ट पर 0.05 का उपयोग करता हूं
थ्रेसहोल्ड भी बढ़ाया जा सकता है। कई अनुप्रयोगों में कुछ जोड़े होते हैं, जिन्हें अक्सर अपडेट किया जाता है और 50 ट्यूपल इतने अधिक नहीं होते हैं। 1000 तक बढ़ने से किसी भी समस्या का सामना नहीं करना चाहिए, लेकिन निश्चित रूप से, आपको अपने मामले पर विचार करना चाहिए
आप ऑटोवैक्यूम को भी ठीक कर सकते हैं और अपनी कुछ तालिकाओं के लिए अलग-अलग सेटिंग्स रख सकते हैं
ALTER TABLE your_table SET (autovacuum_vacuum_scale_factor = 0.05);
यदि आप scale_factor और थ्रेसहोल्ड कॉन्फ़िगर करते हैं, तो आपको ठीक होना चाहिए। आप यह भी बढ़ा सकते हैं autovacuum_vacuum_cost_limit
, जो डिफ़ॉल्ट रूप से बराबर है vacuum_cost_limit
, जो 200 पर सेट है। यह वैक्यूम की एक बहुत ही महत्वपूर्ण विशेषता है, जो इसे सभी संसाधनों को खाने की अनुमति नहीं देता है और आपके आवेदन को वैक्यूमिंग प्रक्रिया के दौरान भी डेटा के साथ संचालित करने की अनुमति देता है। , लेकिन डिफ़ॉल्ट मान बहुत कम है। इसे 1000 तक बढ़ाने से कोई महत्वपूर्ण विलंब नहीं होना चाहिए, लेकिन वैक्यूम प्रक्रिया को बहुत तेज़ी से समाप्त करने की अनुमति देगा
बेशक, आप मैन्युअल रूप से वैक्यूम भी चला सकते हैं। सबसे सरल मामले में, आपके पास एक साधारण क्रोन नौकरी हो सकती है, जो हर रात को पूरी तरह से साफ कर देगी, जब आपका डीबी सुरक्षित नहीं होगा।
उम्मीद है की वो मदद करदे!