क्या पोस्टग्रैड क्वेरी के लिए अधिकतम लंबाई की बाधा है?


33

हम जिस ऐप का निर्माण कर रहे हैं, वह काफी बड़े इंसर्ट प्रश्नों को निष्पादित कर सकता है। क्या कोई सीमा है कि मेरे पोस्टग्रैड क्वेरी में कुछ निश्चित वर्ण ही हो सकते हैं?


2
मैं सिर्फ इतना कहूंगा कि यदि आप उस प्रकृति की किसी भी प्रकार की सीमा तक पहुंच रहे हैं, तो आपको अपने डिजाइन पर पुनर्विचार करने की आवश्यकता होगी। मैंने पाया है कि, आमतौर पर, जो भी प्रश्न पास आ रहे हैं, वे सामान्य रूप से किसी प्रकार के ढांचे (चरम स्ट्रिंग संयोजन) को मिलाकर उत्पन्न होते हैं और वे वास्तविकता के साथ संपर्क खो देते हैं।
वेअर

जवाबों:


43

वर्तमान PostgreSQL संस्करण (9.5 तक) के लिए, प्रश्नों को एक Stringinfoबफर में एक बैकएंड द्वारा प्राप्त किया जाता है , जो कि सीमित है MaxAllocSize, इसे परिभाषित किया गया है:

#define MaxAllocSize   ((Size) 0x3fffffff) /* 1 gigabyte - 1 */

(देखें http://doxygen.postgresql.org/memutils_8h.html )

तो एक क्वेरी आकार में 1 गीगाबाइट (2 ^ 30) तक सीमित है , शून्य से बाइट के लिए शून्य से 1 बाइट।

क्या किसी ग्राहक को एक बड़ी क्वेरी भेजने की कोशिश करनी चाहिए, इस तरह से देखने में एक त्रुटि वापस आ जाएगी:

त्रुटि: मेमोरी से बाहर निकलना
: एन बाइट्स द्वारा 0 बाइट वाले स्ट्रिंग बफ़र को बड़ा नहीं किया जा सकता ।

Nक्वेरी का आकार कहां है।

ध्यान रखें कि नीचे एक क्वेरी 1GBको उस 1GBबफर के अलावा, बड़ी मात्रा में मेमोरी को पार्स, नियोजित या निष्पादित करने की आवश्यकता हो सकती है ।

यदि आपको एक श्रृंखला में शाब्दिक की एक बड़ी श्रृंखला को धक्का देने की आवश्यकता है, तो एक अस्थायी तालिका बनाने के विकल्प पर विचार करें, इसमें COPYपंक्तियाँ और मुख्य क्वेरी उस अस्थायी तालिका को देखें।

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