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