उत्तर इस बात पर निर्भर करता है कि आप डेटाबेस तालिका में कॉलम के बारे में बात कर रहे हैं, या पीएल/एसक्यूएल प्रोग्राम में एक चर के बारे में बात कर रहे हैं।
डेटाबेस कॉलम
उपयोग किए गए संग्रहण की मात्रा संग्रहीत डेटा के आकार के अनुपात में होती है।
PL/SQL चर
यदि चर 1 से 4000 (11g+) / 1999 (10g या इससे पहले) के आकार के साथ घोषित किया गया है, तो अधिकतम लंबाई के लिए मेमोरी आवंटित की जाएगी (यानी VARCHAR2(100) को कम से कम 100 बाइट्स मेमोरी की आवश्यकता होगी)।
यदि वेरिएबल को 4001 (11g+) / 2000 (10g या इससे पहले) या अधिक आकार के साथ घोषित किया जाता है, तो मेमोरी को संग्रहीत डेटा के आकार के अनुसार आवंटित किया जाएगा। (एक दिलचस्प पक्ष प्रश्न होगा, यदि चर का मान बदल दिया जाता है, तो स्मृति का आकार कैसे बदला जाता है - क्या यह नए आकार के साथ एक और बफर पुन:आवंटित करता है?)
10g के लिए संदर्भ:PL/SQL डेटाटाइप
<ब्लॉकक्वॉट>छोटे VARCHAR2 चर को प्रदर्शन के लिए अनुकूलित किया गया है, और बड़े को कुशल मेमोरी उपयोग के लिए अनुकूलित किया गया है। कटऑफ पॉइंट 2000 बाइट्स है। एक VARCHAR2 के लिए जो 2000 बाइट्स या उससे अधिक है, PL/SQL गतिशील रूप से वास्तविक मान रखने के लिए केवल पर्याप्त मेमोरी आवंटित करता है। एक VARCHAR2 चर के लिए जो 2000 बाइट्स से छोटा है, PL/SQL चर की पूर्ण घोषित लंबाई का प्रचार करता है। उदाहरण के लिए, यदि आप एक VARCHAR2(2000 BYTE) चर और एक VARCHAR2(1999 BYTE) चर के लिए समान 500-बाइट मान निर्दिष्ट करते हैं, तो पहले वाला 500 बाइट लेता है और बाद वाला 1999 बाइट लेता है।
11g के लिए संदर्भ:PL/SQL कोड में मेमोरी ओवरहेड से बचना
<ब्लॉकक्वॉट>अधिक . का आकार निर्दिष्ट करें VARCHAR2 चर के लिए 4000 से अधिक वर्ण; PL/SQL तब तक प्रतीक्षा करता है जब तक आप वेरिएबल असाइन नहीं करते हैं, तब केवल उतना ही संग्रहण आवंटित करता है जितना आवश्यक हो