क्या वर्कर स्तंभों को रेखांकित करने का कोई मतलब है?


18

VARCHAR2ओरेकल के आसपास घूमने से मिश्रित रिपोर्ट लगती है कि ओरेकल में किसी कॉलम का आकार प्रदर्शन को प्रभावित करता है या नहीं।

मैं VARCHARआकार के सवाल को थोड़ा मोड़ देना चाहूंगा और इसमें कुछ जानकारी हासिल करने की उम्मीद करूंगा :

यह देखते हुए (बहुस्तरीय) मुक्त-पाठ क्षेत्र ( नाम की तरह छोटा सामान नहीं ) जिसे आप (ओरेकल) डेटाबेस में संग्रहीत करना चाहते हैं, क्या क्षमता ( ओरेकल) पर अधिकतम नहीं करने पर VARCHAR( VARCHAR2(4000)ऑरेकल) पर कोई विकल्प नहीं है, लेकिन चुनना। एक छोटा मान जैसे कि 1024 या 512 क्योंकि संभवतः 98% मामलों में यह पर्याप्त होगा।


जवाबों:


12

यह मेमोरी के उपयोग को प्रभावित करता है, खासकर जब एक ग्राहक प्रोग्राम को डेटासेट प्राप्त करने के लिए पर्याप्त मेमोरी आवंटित करनी होती है।

इस बात को ध्यान में रखें कि बहुत सारे ऐप (विशेष रूप से वेब ऐप) UTF-8 का उपयोग करते हैं जो एक बहु-बाइट वर्ण सेट है। इस प्रकार, आपको वास्तव में बाइट्स के बजाय वर्णों पर विचार करना चाहिए।

अगर मुझे एक हजार से अधिक पात्रों की उम्मीद थी, तो मैं सक्रिय रूप से एक CLOB पर विचार करूंगा। मैं इस बारे में सोच रहा हूँ कि क्या यह सादे पाठ या मार्कअप (विकी / html?) के कुछ रूप को संग्रहीत करेगा, गैर-यूरो भाषाओं के साथ उपयोग। उदाहरण के लिए, यहां प्रश्न और उत्तर CLOB होंगे, लेकिन टिप्पणियां एक VARCHAR में फिट हो सकती हैं।

यदि आप एक VARCHAR को अधिकतम करते हैं, तो छह महीनों में कोई इसे फिर से बड़ा बनाना चाहेगा, और आप एक CLOB का उपयोग नहीं करने के लिए खुद को लात मारेंगे।


2
यूटीएफ -8 आमतौर पर पश्चिमी भाषाओं के लिए एक चरित्र के लिए एक बाइट का उपयोग करेगा। यह बहु-बाइट इस अर्थ में है कि यह गैर-पश्चिमी वर्णों का प्रतिनिधित्व करने के लिए मल्टी-बाइट "एस्केप" अनुक्रमों के लिए अनुमति देता है।
एरिक जे।

9

आम तौर पर कोई प्रदर्शन विचार नहीं होते हैं, हालांकि ऐसे पक्ष मुद्दे होते हैं जो आपके लिए महत्वपूर्ण हो सकते हैं। एक के लिए सीमा varcharकिसी भी अन्य की तरह एक बाधा के रूप में के बारे में सोचा जाना चाहिए - यह है व्यापार नियम लागू करने के लिए।

IMO जो प्रश्न आपसे पूछा जाना चाहिए वह यह है कि "क्या मैं इस क्षेत्र में संग्रहीत फ्री-टेक्स्ट डेटा को अब n n बाइट्स / चार्ट्स से रोकना चाहता हूं " - यह केवल निर्धारण कारक है, जब आपस में चयन करते हैं varchar(512)औरvarchar(4000)

ध्यान दें कि मैं मान रहा हूं कि आप varcharSQL प्रकार के बारे में बात कर रहे हैं - स्थिति अलग है pl/sqlऔर लंबाई चुनने से मेमोरी आवंटन कारणों के लिए महत्वपूर्ण हो सकता है।


धन्यवाद। जहाँ तक मेरा (बहुत सीमित) अनुभव है, कोई भी "व्यावसायिक नियम" "500 - 3999" के बीच की सीमा बताते हुए बस मनमानी करता है, यानी किसी को सिर्फ नंबर पसंद है। IMHO, अगर मैं मुक्त-पाठ के लिए जा रहा हूं और कोई कार्यान्वयन परिणाम नहीं हैं (इस प्रश्न का संदर्भ), या तो यह अधिकतम (4000) है या यह मुक्त-पाठ नहीं है। --- इस बिंदु को मैं इस टिप्पणी में बनाने की कोशिश कर रहा हूं: मुझे लगता है कि btw को चुनने में मदद करने के लिए कभी भी एक व्यावसायिक नियम नहीं होगा। 512 और 4000 (जब तक कि यह नहीं है: "जितना संभव हो उतना वर्ण")
मार्टिन

यदि यह वास्तव में "जितना संभव हो उतने वर्ण" है, तो जैसा कि @ गैरी कहते हैं, आपको एक पर विचार clobकरना चाहिए, क्या आपको नहीं करना चाहिए?
जैक डगलस

4

यदि कोई छोटा मान 98% मामलों में काम करेगा, लेकिन 100% मामलों में काम करने के लिए Varchar2 (4000) लेता है, तो आपके पास बड़े मूल्य का उपयोग करने के अलावा बहुत कम विकल्प हैं । मानों के 2% के लिए एक अलग तालिका बनाने और फिर आवेषण / चयन आदि का समन्वय करने से जटिलता बढ़ेगी जो कि किसी भी स्मृति या प्रदर्शन लाभ को क्षेत्र को न बढ़ाने से रोक देगी।

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