कृपया ध्यान दें कि, पोस्टग्रेज़ में, अस्थायी तालिकाओं के लिए डिफ़ॉल्ट व्यवहार यह है कि वे स्वचालित रूप से गिराए नहीं जाते हैं, और डेटा प्रतिबद्ध होने पर कायम रहता है। देखें ON COMMIT ।
हालाँकि, अस्थायी तालिका डेटाबेस सत्र के अंत में छोड़ दी जाती है:
<ब्लॉकक्वॉट>अस्थायी तालिकाओं को स्वचालित रूप से सत्र के अंत में, या वैकल्पिक रूप से वर्तमान लेनदेन के अंत में छोड़ दिया जाता है।
आपको कई बातों पर ध्यान देना होगा:
- यदि आप स्पष्ट रूप से
DROPकरना चाहते हैं लेन-देन के अंत में एक अस्थायी तालिका, इसेCREATE TEMPORARY TABLE ... ON COMMIT DROPके साथ बनाएं वाक्य रचना। - कनेक्शन पूलिंग की उपस्थिति में , एक डेटाबेस सत्र में कई क्लाइंट सत्र हो सकते हैं;
CREATE. में टकराव से बचने के लिए , आपको अपनी अस्थायी तालिकाओं को छोड़ देना चाहिए -- या तो पूल से कनेक्शन वापस करने से पहले (उदाहरण के लिए लेन-देन के अंदर सब कुछ करके औरON COMMIT DROPका उपयोग करके) निर्माण सिंटैक्स), या आवश्यकता के आधार पर (किसी भीCREATE TEMPORARY TABLEसे पहले) संबंधितDROP TABLE IF EXISTS. के साथ स्टेटमेंट , जिसे बाहर के लेन-देन में भी काम करने का फायदा है उदा। यदि कनेक्शन का उपयोग ऑटो-कमिट मोड में किया जाता है।) - जबकि अस्थायी तालिका उपयोग में है, डिस्क पर ओवरफ्लो होने से पहले इसका कितना हिस्सा मेमोरी में फिट होगा? देखें
temp_bufferspostgresql.conf. में विकल्प - टेम्प टेबल के साथ अक्सर काम करते समय मुझे और क्या चिंता करनी चाहिए? कैटलॉग से किसी भी मृत टुपल्स को साफ करने के लिए, अस्थायी तालिकाओं को छोड़ने के बाद एक वैक्यूम की सिफारिश की जाती है। डिफ़ॉल्ट सेटिंग्स (
auto_vacuum) का उपयोग करते समय पोस्टग्रेज आपके लिए हर 3 मिनट में स्वचालित रूप से वैक्यूम हो जाएगा )।
साथ ही, आपके प्रश्न से असंबंधित (लेकिन संभवतः आपकी परियोजना से संबंधित):ध्यान रखें कि, यदि आपको के बाद एक अस्थायी तालिका के विरुद्ध क्वेरी चलानी है आपने इसे भर दिया है, तो उपयुक्त सूचकांक बनाना और ANALYZE जारी करना एक अच्छा विचार है विचाराधीन अस्थायी तालिका पर बाद आपने इसमें सम्मिलित करना समाप्त कर लिया है। डिफ़ॉल्ट रूप से, लागत आधारित अनुकूलक यह मान लेगा कि एक नई बनाई गई अस्थायी तालिका में ~1000 पंक्तियाँ हैं और इसके परिणामस्वरूप खराब प्रदर्शन हो सकता है यदि अस्थायी तालिका में वास्तव में लाखों पंक्तियाँ हों।