MySQL प्रकार के पाठ के लिए अधिकतम लंबाई


437

मैं निजी संदेश भेजने के लिए एक फ़ॉर्म बना रहा हूं और अपने MySQL तालिका में फ़ील्ड maxlengthकी अधिकतम लंबाई के लिए उपयुक्त एक textarea का मान सेट करना चाहता textहूं। कितने अक्षर एक प्रकार का टेक्स्ट फ़ील्ड स्टोर कर सकते हैं?

यदि बहुत कुछ है, तो क्या मैं डेटाबेस पाठ प्रकार के क्षेत्र में लंबाई निर्दिष्ट करने में सक्षम हो सकता हूं जैसा कि मैं varchar के साथ करूंगा?


5
एक साधारण पाठ क्षेत्र में 64k टाइप करना? दर्दनाक ...
मार्क बी

169
@Marc B कभी भी उपयोगकर्ता के निजी पाठ संदेश क्षेत्र में भारी मात्रा में कचरा चिपकाने की क्षमता को कम नहीं आंकता।
सिमोंटप्लर

5
और यही कारण है कि आपको
टेक्स्टफील्ड की

जवाबों:


750

अधिकतम संख्या के लिए देखें: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

TINYBLOB, TINYTEXT       L + 1 bytes, where L < 2^8    (255 Bytes)
BLOB, TEXT               L + 2 bytes, where L < 2^16   (64 Kilobytes)
MEDIUMBLOB, MEDIUMTEXT   L + 3 bytes, where L < 2^24   (16 Megabytes)
LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)

L आपके टेक्स्ट फील्ड में बाइट्स की संख्या है। तो पाठ के लिए वर्णों की अधिकतम संख्या 2 16 -1 (एकल-बाइट वर्णों का उपयोग करके) है। मतलब 65 535 वर्ण (सिंगल-बाइट वर्णों का उपयोग करके)।

UTF-8 / MultiByte एन्कोडिंग : MultiByte एन्कोडिंग का उपयोग करके प्रत्येक वर्ण 1 बाइट से अधिक स्थान की खपत कर सकता है। UTF-8 के लिए अंतरिक्ष की खपत प्रति चार्ट 1 से 4 बाइट्स के बीच है।


2
@ fyr- यहां L + 2 बाइट्स के लिए क्या मतलब है, जहां L <2 ^ 16? क्या आप इसे थोड़ा और परिभाषित कर सकते हैं? अन्य जानकार आप मुझे बता सकते हैं कि हम टेक्स्ट फील्ड में कितने चार्ट स्टोर कर सकते हैं? कृपया ....
बजरंग

2
@ जे एल एल चार की संख्या है और चार्ट की संख्या 2 की शक्ति से कम 2 की आवश्यकता है। 2 ^ 16 = 65536। इसलिए आप 65535 चार्ट में प्रवेश कर सकते हैं जो 65535 बाइट्स + 3 बाइट्स का उपभोग करते हैं - 65 538 बाइट्स प्रति पूर्ण भरा हुआ मैदान।
FYR

9
ध्यान दें कि आकार सीमा बाइट्स में हैं । इसलिए यदि आप मल्टी-बाइट वर्णों का उपयोग करते हैं, तो आपको TEXT कॉलम में 2 ^ 16 वर्ण नहीं मिलते हैं, फिर भी आपको कई वर्ण मिलते हैं जिन्हें आप 2 ^ 16 बाइट्स में संग्रहीत कर सकते हैं।
बिल कार्विन

4
बिल करविन ने क्या कहा। BYTES, नहीं CHARACTERS। एक चरित्र दिए गए एन्कोडिंग के साथ स्टोर करने के लिए 4 बाइट्स का उपयोग कर सकता है (जैसे UTF-8 में by)।
बेसिक 6

8
ध्यान दें कि MySQL में, utf8 3 बाइट्स तक खपत करता है, utf8mb4 4 तक खपत करता है। संदर्भ
एमपीएन

126

TINYTEXT: 256 बाइट्स
TEXT: 65,535 बाइट्स
MEDIUMTEXT: 16,777,215 बाइट्स
LONGTEXT: 4,294,967,295 बाइट


10
मुझे लगता है कि स्वीकृत उत्तर के अनुसार TINYTEXT 256 बाइट्स के बजाय 255 बाइट्स होना चाहिए?
सात्सुनी

83
Type       | Approx. Length     | Exact Max. Length Allowed
-----------------------------------------------------------
TINYTEXT   | 256 Bytes          |           255 characters
TEXT       |  64 Kilobytes      |        65,535 characters
MEDIUMTEXT |  16 Megabytes      |    16,777,215 characters
LONGTEXT   |   4 Gigabytes      | 4,294,967,295 characters

नोट: यदि मल्टीबाइट पात्रों का उपयोग किया जाता है (जैसे अरबी, जहां प्रत्येक अरबी चरित्र 2 बाइट्स लेता है), कॉलम "सटीक अधिकतम लंबाई" के लिए TINYTEXT127 अरबी वर्णों को पकड़ सकता है (नोट: अंतरिक्ष, डैश, अंडरस्कोर, और अन्य वर्ण। , 1-बाइट अक्षर हैं)।

मूल रूप से, यह पसंद है:

बाइट्स में "सटीक अधिकतम लंबाई।" = "लगभग। लंबाई" - 1


18

Http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html पर रिकॉर्डिंग करना , सीमा L + 2 bytes, where L < 2^16, या 64 k है।

आपको इसे सीमित करने के साथ खुद को चिंता करने की आवश्यकता नहीं है, यह स्वचालित रूप से टूट जाता है जो स्ट्रिंग के रूप में जुड़ जाता है, इसलिए यह हमेशा 64k का नेत्रहीन उपयोग नहीं करेगा।


8

कितने अक्षर एक प्रकार का टेक्स्ट फ़ील्ड स्टोर कर सकते हैं?

डॉक्यूमेंटेशन के अनुसार, यदि चार्टसेट UTF8 है तो आप अधिकतम 21,844 अक्षरों का उपयोग कर सकते हैं

यदि बहुत कुछ है, तो क्या मैं db पाठ प्रकार के क्षेत्र में लंबाई निर्दिष्ट करने में सक्षम होऊंगा जैसा कि मैं varchar के साथ करूंगा?

आपको लंबाई निर्दिष्ट करने की आवश्यकता नहीं है। यदि आपको अधिक वर्ण उपयोग करने की आवश्यकता है तो डेटा प्रकार MEDIUMTEXT या LONGTEXT का उपयोग करें। VARCHAR के साथ, विनिर्देशन की लंबाई संग्रहण आवश्यकता के लिए नहीं है, यह केवल डेटा बेस से डेटा पुनर्प्राप्त करने के लिए है।


8
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

TINYTEXTएक स्ट्रिंग डेटा प्रकार है जो 255वर्णों तक संग्रहीत कर सकता है ।

TEXTएक स्ट्रिंग डेटा प्रकार है जो 65,535वर्णों तक संग्रहीत कर सकता है । TEXTआमतौर पर संक्षिप्त लेख के लिए उपयोग किया जाता है।

LONGTEXTअधिकतम लंबाई 4,294,967,295वर्णों के साथ एक स्ट्रिंग डेटा प्रकार है । उपयोग करें LONGTEXTयदि आपको बड़े पाठ को संग्रहीत करने की आवश्यकता है, जैसे कि उपन्यास का एक अध्याय।


1

TEXTएक स्ट्रिंग डेटा प्रकार है जो 65,535 वर्णों तक संग्रहीत कर सकता है। लेकिन फिर भी अगर आप अधिक डेटा स्टोर करना चाहते हैं तो इसके डेटा प्रकार को बदल देंLONGTEXT

ALTER तालिका name_tabelबदलें text_fieldLongText वर्ण सेट utf8मुक़ाबला utf8_general_ciनहीं NULL;


1

MySql संस्करण 8.0 के लिए।

संख्यात्मक प्रकार भंडारण आवश्यकताएँ

Data Type       Storage Required
TINYINT         1 byte
SMALLINT        2 bytes
MEDIUMINT       3 bytes
INT, INTEGER    4 bytes
BIGINT          8 bytes
FLOAT(p)        4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53
FLOAT           4 bytes
DOUBLE, REAL    8 bytes
DECIMAL(M,D), NUMERIC(M,D)  Varies; see following discussion
BIT(M)  approximately (M+7)/8 bytes

DECIMAL (और NUMERIC) कॉलम के मानों को एक बाइनरी प्रारूप का उपयोग करके दर्शाया गया है जो नौ दशमलव (बेस 10) अंकों को चार बाइट्स में पैक करता है। प्रत्येक मूल्य के पूर्णांक और आंशिक भागों के लिए भंडारण अलग-अलग निर्धारित किया जाता है। नौ अंकों में से प्रत्येक को चार बाइट्स की आवश्यकता होती है, और "बचे हुए" अंकों को चार बाइट्स के कुछ अंश की आवश्यकता होती है। अतिरिक्त अंकों के लिए आवश्यक संग्रहण निम्न तालिका द्वारा दिया गया है।

TIME, DATETIME, और TIMESTAMP स्तंभों के लिए दिनांक और समय प्रकार संग्रहण आवश्यकताएँ, MySQL 5.6.4 से पहले बनाए गए तालिकाओं के लिए आवश्यक संग्रहण 5.6.4 से निर्मित तालिकाओं से भिन्न होता है। यह 5.6.4 में परिवर्तन के कारण है जो इन प्रकारों को एक आंशिक भाग होने की अनुमति देता है, जिसके लिए 0 से 3 बाइट्स की आवश्यकता होती है।

Data Type   Storage Required Before MySQL 5.6.4   Storage Required as of MySQL 5.6.4
YEAR        1 byte                                1 byte
DATE        3 bytes                               3 bytes
TIME        3 bytes                               3 bytes + fractional seconds storage
DATETIME    8 bytes                               5 bytes + fractional seconds storage
TIMESTAMP   4 bytes                               4 bytes + fractional seconds storage

MySQL 5.6.4 के रूप में, YEAR और DATE के लिए संग्रहण अपरिवर्तित रहता है। हालाँकि, TIME, DATETIME, और TIMESTAMP को अलग-अलग रूप में दर्शाया गया है। DATETIME को और अधिक कुशलता से पैक किया जाता है, गैर-आंशिक भाग के लिए 8 बाइट्स के बजाय 5 की आवश्यकता होती है, और तीनों भागों में एक आंशिक भाग होता है, जिसमें संग्रहीत मानों की आंशिक सेकंड सटीकता के आधार पर 0 से 3 बाइट्स की आवश्यकता होती है।

Fractional Seconds Precision    Storage Required
0                               0 bytes
1, 2                            1 byte
3, 4                            2 bytes
5, 6                            3 bytes

उदाहरण के लिए, TIME (0), TIME (2), TIME (4), और TIME (6) क्रमशः 3, 4, 5 और 6 बाइट्स का उपयोग करते हैं। TIME और TIME (0) समतुल्य हैं और उन्हें समान संग्रहण की आवश्यकता होती है।

अस्थायी मूल्यों के आंतरिक प्रतिनिधित्व के बारे में जानकारी के लिए, MySQL इंटरनेशनल: महत्वपूर्ण एल्गोरिदम और संरचनाएं देखें।

स्ट्रिंग प्रकार संग्रहण आवश्यकताएँ निम्न तालिका में, M गैर-स्ट्रिंग स्ट्रिंग प्रकारों के लिए वर्णों में घोषित स्तंभ लंबाई और बाइनरी स्ट्रिंग प्रकारों के लिए बाइट्स का प्रतिनिधित्व करता है। एल एक दिए गए स्ट्रिंग मान के बाइट्स में वास्तविक लंबाई का प्रतिनिधित्व करता है।

Data Type                    Storage Required
CHAR(M)                      The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set.
BINARY(M)                    M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M)     L + 1 bytes if column values require 0  255 bytes, L + 2 bytes if values may require more than 255 bytes
TINYBLOB, TINYTEXT           L + 1 bytes, where L < 28
BLOB, TEXT                   L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT       L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT           L + 4 bytes, where L < 232
ENUM('value1','value2',...)  1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
SET('value1','value2',...)   1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.