ऑनलाइन डॉक्स के अनुसार , 64K पंक्ति की सीमा है और आप पंक्ति आकार का उपयोग करके काम कर सकते हैं:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
आपको यह ध्यान रखना होगा कि कॉलम की लंबाई उनके आकार की एक-से-एक मैपिंग नहीं है। उदाहरण के लिए, CHAR(10) CHARACTER SET utf8
दस वर्णों में से प्रत्येक के लिए तीन बाइट्स की आवश्यकता होती है क्योंकि उस विशेष एन्कोडिंग के लिए तीन-बाइट्स-प्रति-वर्ण गुण utf8
(जो कि MySQL के utf8
एन्कोडिंग के बजाय "वास्तविक" UTF-8 है, जो चार बाइट्स तक हो सकता है, के लिए खाता है। )।
लेकिन, यदि आपकी पंक्ति का आकार 64K के करीब है, तो आप अपने डेटाबेस के स्कीमा की जांच कर सकते हैं। यह एक दुर्लभ तालिका है जिसे उचित रूप से सेट अप (3NF) डेटाबेस में व्यापक होना चाहिए - यह संभव है, बस बहुत आम नहीं है।
यदि आप इससे अधिक उपयोग करना चाहते हैं, तो आप BLOB
या TEXT
प्रकारों का उपयोग कर सकते हैं । ये पंक्ति की 64K सीमा (एक छोटे प्रशासनिक पदचिह्न के अलावा) के खिलाफ नहीं हैं, लेकिन आपको उन अन्य समस्याओं के बारे में पता होना चाहिए जो उनके उपयोग से आती हैं, जैसे कि एक निश्चित संख्या से परे पूरे पाठ ब्लॉक का उपयोग करने में सक्षम नहीं होना। वर्णों (हालाँकि इसे ऊपर की ओर कॉन्फ़िगर किया जा सकता है), अस्थायी तालिकाओं को स्मृति के बजाय डिस्क पर होने के लिए मजबूर करता है, या क्लाइंट और सर्वर कॉम्स बफ़र्स को कुशलता से आकार को संभालने के लिए कॉन्फ़िगर करने के लिए होता है।
अनुमत आकार हैं:
TINYTEXT 255 (+1 byte overhead)
TEXT 64K - 1 (+2 bytes overhead)
MEDIUMTEXT 16M - 1 (+3 bytes overhead)
LONGTEXT 4G - 1 (+4 bytes overhead)
आपके पास अभी भी बाइट / कैरेक्टर मिसमैच है (ताकि कोई MEDIUMTEXT utf8
कॉलम "केवल" लगभग आधे मिलियन वर्णों को संग्रहीत कर सके (16M-1)/3 = 5,592,405
) , लेकिन यह अभी भी आपकी सीमा का विस्तार करता है।