SQL सर्वर 2019 के साथ Microsoft UTF-8 समर्थनCHAR
और VARCHAR
डेटा प्रकारों के लिए परिचय देता है और कहता है:
यह सुविधा उपयोग में निर्धारित चरित्र के आधार पर महत्वपूर्ण भंडारण बचत प्रदान कर सकती है। उदाहरण के लिए, एक मौजूदा कॉलम डेटा प्रकार को एनसीएचएआर (10) से सीएचएआर (10) से बदलकर एक यूटीएफ -8 सक्षम टकराव का उपयोग करके स्टोरेज आवश्यकताओं में लगभग 50% की कमी में बदल जाता है। यह कमी इसलिए है क्योंकि NCHAR (10) को भंडारण के लिए 22 बाइट्स की आवश्यकता होती है, जबकि CHAR (10) को एक ही यूनिकोड स्ट्रिंग के लिए 12 बाइट्स की आवश्यकता होती है।
UTF-8 हर स्क्रिप्ट का समर्थन करता है, इसलिए मूल रूप से हम यूनिकोड डेटा को varchar
और char
कॉलमों में संग्रहीत करना शुरू कर सकते हैं। और जैसा कि प्रलेखन में कहा गया है, यह तालिकाओं और अनुक्रमित के आकार को कम कर सकता है, और वहां से हम और भी बेहतर प्रदर्शन प्राप्त कर सकते हैं, क्योंकि डेटा की छोटी मात्रा को पढ़ा जाता है।
मुझे आश्चर्य है कि इसका मतलब यह है कि हम यूटीएफ -16 को लागू करने वाले कॉलम nvarchar
और nchar
कॉलम का उपयोग करना बंद कर सकते हैं ?
क्या कोई भी परिदृश्य और कारण को इंगित कर सकता है, न कि UTF
एन्कोडिंग के साथ चार डेटा प्रकारों का उपयोग करने के लिए और एन-चार लोगों का उपयोग जारी रखने के लिए?
CHAR
यूनिकोड प्रकारों की तुलना में यूटीएफ -8 प्रकारों का उपयोग करने से बदतर होंगे (संपीड़न के साथ या बिना, क्योंकि अंततः डेटा को संसाधित करने के लिए असम्पीडित होने की आवश्यकता होती है)। यह भी विचार करें कि विंडोज का मूल स्ट्रिंग प्रकार यूनिकोड है, इसलिए UTF-8 तार को अक्सर डिकोड करने की आवश्यकता होती है। इसमें शामिल ट्रेडऑफ का मतलब है कि यह संभव नहीं है कि N
प्रकार जल्द ही किसी भी समय सेवानिवृत्त हो जाएंगे।
CHAR
शायद लिनक्स पर SQL सर्वर है, अगर इंजन को सीधे UTF-8 के रूप में स्ट्रिंग के प्रसंस्करण के लिए मूल समर्थन मिलता है - यहाँ UTF-8 "मूल" वर्ण सेट (अधिक या कम) है और तार को UTF-16 के आसपास रखना कम कुशल विकल्प है। यह विंडोज पर उन जगहों पर उपयोग करने के लिए भी चोट नहीं पहुंचाएगा जहां आप पहले से ही उपयोग कर रहे हैं CHAR
, निश्चित रूप से, कोलाज को संग्रहीत किए जाने वाले वर्णों को प्रतिबंधित करने के बाद कभी भी आकर्षक नहीं बनाया गया है।