प्रति MySQL डॉक्स , चार पाठ प्रकार हैं:
- TINYTEXT
- पाठ
- MEDIUMTEXT
- LongText
चरित्र एन्कोडिंग मानने वाले प्रत्येक डेटा प्रकार के एक कॉलम में अधिकतम लंबाई क्या है जिसे यूटीएफ -8 कहा जा सकता है?
प्रति MySQL डॉक्स , चार पाठ प्रकार हैं:
चरित्र एन्कोडिंग मानने वाले प्रत्येक डेटा प्रकार के एक कॉलम में अधिकतम लंबाई क्या है जिसे यूटीएफ -8 कहा जा सकता है?
जवाबों:
से प्रलेखन :
प्रकार | अधिकतम लंबाई ----------- + ------------------------------------- TINYTEXT | 255 (2 8 )1) बाइट्स पाठ | 65,535 (2 16 )1) बाइट्स = 64 कीबी MEDIUMTEXT | 16,777,215 (2 24 771 ) बाइट्स = 16 MiB LONGTEXT | 4,294,967,295 (2 32 by1 ) बाइट्स = 4 GiB
ध्यान दें कि आपके कॉलम में संग्रहीत किए जाने वाले वर्णों की संख्या वर्ण एन्कोडिंग पर निर्भर करेगी ।
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
अधिक विस्तार के लिए अंकन का उत्तर देखें।
उसी उत्तर का विस्तार
यह एक बहुत बड़ा उदाहरण है जो त्वरित निर्णय के लिए है!
xx
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
कृपया क्रिस वी के जवाब को भी देखें: https://stackoverflow.com/a/35785869/1881812
TINYTEXT
मायने रखता है 1 बाइट + 8 रिकॉर्ड आकार के खिलाफ बाइट, जबकि एक VARCHAR(255)
1 बाइट + 255 बाइट से 2 बाइट + 1020 बाइट (4 बाइट UTF-8 वर्णों) रिकॉर्ड आकार के खिलाफ करने के लिए मायने रखता है।
@ Ankan-Zerob की चुनौती के लिए बढ़ती है, इस अधिकतम लंबाई जो प्रत्येक पाठ प्रकार में संग्रहित किया जा सकता की मेरी अनुमान है शब्दों में मापा :
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
में अंग्रेजी , शब्द प्रति 4.8 पत्र शायद एक अच्छा औसत (जैसे है norvig.com/mayzner.html ), हालांकि शब्द लंबाई डोमेन के अनुसार अलग अलग होंगे (जैसे बोली जाने वाली भाषा बनाम शैक्षिक पेपर), इसलिए वहाँ कोई मतलब भी सटीक किया जा रहा है। अंग्रेजी ज्यादातर एकल-बाइट ASCII वर्ण है, जिसमें कभी-कभी बहु-बाइट वर्ण होते हैं, इसलिए एक-बाइट-प्रति-अक्षर के करीब। इंटर-वर्ड रिक्त स्थान के लिए एक अतिरिक्त चरित्र की अनुमति दी जानी है, इसलिए मैंने प्रति शब्द 5.8 बाइट्स से गोल किया है। बहुत से लहजे वाली भाषाएं जैसे कि कहती हैं कि पोलिश कुछ कम शब्दों को संग्रहीत करती है, जैसे कि जर्मन लंबे शब्दों के साथ।
की आवश्यकता होती है बोली मल्टी-बाइट ग्रीक, अरबी, हिब्रू, हिंदी, थाई, आदि, आदि के रूप में वर्ण आम तौर पर UTF-8 में चरित्र प्रति दो बाइट्स की आवश्यकता है। प्रति शब्द 5 अक्षरों पर बेतहाशा अनुमान लगाते हुए, मैंने प्रति शब्द 11 बाइट्स से गोल किया है।
सीजेके स्क्रिप्ट (हंजी, कांजी, हीरागाना, कटकाना, आदि) मुझे कुछ भी नहीं पता है; मेरा मानना है कि वर्णों को अधिकतर UTF-8 में 3 बाइट्स की आवश्यकता होती है, और (बड़े सरलीकरण के साथ) उन्हें प्रति शब्द लगभग 2 वर्णों का उपयोग करने के लिए माना जा सकता है, इसलिए वे अन्य दो के बीच कहीं होंगे। (सीजेके लिपियों को यूटीएफ -16 का उपयोग करके कम भंडारण की आवश्यकता होती है, निर्भर करता है)।
यह निश्चित रूप से भंडारण ओवरहेड्स आदि की अनदेखी है।