हम जिस ऐप का निर्माण कर रहे हैं, वह काफी बड़े इंसर्ट प्रश्नों को निष्पादित कर सकता है। क्या कोई सीमा है कि मेरे पोस्टग्रैड क्वेरी में कुछ निश्चित वर्ण ही हो सकते हैं?
हम जिस ऐप का निर्माण कर रहे हैं, वह काफी बड़े इंसर्ट प्रश्नों को निष्पादित कर सकता है। क्या कोई सीमा है कि मेरे पोस्टग्रैड क्वेरी में कुछ निश्चित वर्ण ही हो सकते हैं?
जवाबों:
वर्तमान 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
पंक्तियाँ और मुख्य क्वेरी उस अस्थायी तालिका को देखें।