মাইএসকিউএল টাইপ পাঠ্যের সর্বাধিক দৈর্ঘ্য


437

আমি ব্যক্তিগত বার্তা প্রেরণের জন্য একটি ফর্ম তৈরি করছি এবং আমার মাইএসকিউএল ডাটাবেস টেবিলের ক্ষেত্রের maxlengthসর্বাধিক দৈর্ঘ্যের জন্য উপযুক্ত একটি টেক্সারিয়ার মান নির্ধারণ করতে চাই text। একটি পাঠ্য ক্ষেত্রের টাইপ কয়টি অক্ষর রাখতে পারে?

যদি অনেক কিছু হয় তবে আমি বার্চারের সাথে ডাটাবেস পাঠ্যের ধরণের ক্ষেত্রে দৈর্ঘ্য নির্দিষ্ট করতে সক্ষম হব?


5
একটি সাধারণ পাঠ্য ক্ষেত্রে 64k টাইপ করতে চান? বেদনাদায়ক ...
মার্ক বি

169
@ মার্ক বি কোনও ব্যক্তিগত পাঠ্য বার্তা ক্ষেত্রের মধ্যে প্রচুর পরিমাণে আবর্জনা আটকে দেওয়ার ব্যবহারকারীর ক্ষমতাকে কখনই হ্রাস করবেন না।
সিমোনটেম্পলার

5
এবং এজন্যই আপনার পাঠ্যক্ষেত্র ক্ষমতা সীমাবদ্ধ করা উচিত এবং সর্বদা আপনার ইনপুটগুলি বৈধ করে তোলা উচিত ...
jpangamarca

উত্তর:


750

সর্বাধিক সংখ্যার জন্য দেখুন: http://dev.mysql.com/doc/refman/5.0/en/stores-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)

এল আপনার পাঠ্যের ক্ষেত্রে বাইট সংখ্যা। সুতরাং পাঠ্যের সর্বাধিক সংখ্যার সংখ্যা 2 16 -1 (একক বাইট অক্ষর ব্যবহার করে)। মানে 6555 অক্ষর (একক বাইট অক্ষর ব্যবহার করে)।

ইউটিএফ -8 / মাল্টিবাইট এনকোডিং : প্রতিটি অক্ষরকে মাল্টিবাইট এনকোডিং ব্যবহার করে স্থানের 1 বাইটেরও বেশি ব্যবহার হতে পারে। ইউটিএফ -8 এর জন্য স্পেস খরচ প্রতি চারকে 1 থেকে 4 বাইটের মধ্যে হয়।


2
@ fyr- এখানে এল + 2 বাইটের অর্থ কী, যেখানে এল <2 ^ 16? আপনি দয়া করে এটি আরও কিছুটা সংজ্ঞায়িত করতে পারেন? অন্যান্য জ্ঞানী আপনি কি আমাকে বলতে পারেন পাঠ্যের ক্ষেত্রে আমরা কতগুলি অক্ষর সংরক্ষণ করতে পারি? দয়া করে ....
বজরং

2
@ জেজে এল হল চরের সংখ্যা এবং চরগুলির সংখ্যা ১ 16 এর পাওয়ার হিসাবে 2 এর কম হওয়া দরকার 2 ভরাট ক্ষেত্র
fyr

9
নোট করুন যে আকারের সীমাটি বাইটে রয়েছে । সুতরাং আপনি যদি মাল্টি-বাইট অক্ষর ব্যবহার করেন তবে আপনি কোনও পাঠ্য কলামে 2 ^ 16 টি অক্ষর পাবেন না, তবে আপনি 2 ^ 16 বাইটে সংরক্ষণ করতে পারেন এমন অনেকগুলি অক্ষর পাবেন।
বিল কারভিন

4
কী বললেন বিল কারভিন। বাইটস, অক্ষর নয়। একটি অক্ষর প্রদত্ত এনকোডিং সহ সঞ্চয় করতে 4 বাইট ব্যবহার করতে পারে (যেমন ইউটিএফ -8 এ))।
বেসিক 6

8
নোট করুন যে মাইএসকিউএল এ, ইউটিএফ 8 3 বাইট পর্যন্ত গ্রাস করে, ইউটিএফ 8 এমবি 4 4 অবধি ব্যবহার করে রেফারেন্স
এমপেন

126

টাইনটেক্সট: 256 বাইট
টেক্সট: 65,535 বাইট
মিডিয়ামটেক্সট: 16,777,215 বাইট
লং টেক্সট: 4,294,967,295 বাইট


10
আমি মনে করি গৃহীত উত্তর অনুসারে TINYTEXT 256 বাইটের পরিবর্তে 255 বাইট হওয়া উচিত?
cytsunny

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/stores-requirements.html এর সাথে মিল রেখে , সীমাটি L + 2 bytes, where L < 2^16বা 64 কে।

এটি সীমাবদ্ধ করে নিয়ে নিজেকে উদ্বিগ্ন হওয়ার দরকার নেই, স্ট্রিংটি বাড়ার সাথে সাথে এটি স্বয়ংক্রিয়ভাবে খণ্ডগুলিতে বিভক্ত হয়ে যায়, সুতরাং এটি সর্বদা অন্ধভাবে 64৪ কে ব্যবহার করবে না।


8

একটি পাঠ্য ক্ষেত্রের টাইপ কয়টি অক্ষর রাখতে পারে?

ডকুমেন্টেশন অনুসারে চরসেটটি ইউটিএফ 8 হলে আপনি সর্বোচ্চ 21,844 টি অক্ষর ব্যবহার করতে পারেন

যদি অনেক কিছু হয়, তবে আমি কি বর্ণচরণের সাথে ডিবি পাঠ্য টাইপ ক্ষেত্রে দৈর্ঘ্য নির্দিষ্ট করতে সক্ষম হব?

আপনার দৈর্ঘ্য নির্দিষ্ট করতে হবে না। আপনার যদি আরও চরিত্রের প্রয়োজন হয় ডেটা ধরণের ব্যবহারের মিডিয়ামটেক্সট বা লংটেক্সট। 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

টেবিল name_tabelপরিবর্তন text_fieldলম্বটেক্সট বর্ণচিহ্ন সেট করুন utf8কল করুন utf8_general_ciনা;


1

মাইএসকিএল সংস্করণ 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

ডেসিমাল (এবং NUMERIC) কলামগুলির মানগুলি বাইনারি বিন্যাস ব্যবহার করে উপস্থাপন করা হয় যা নয় দশমিক (বেস 10) অঙ্ককে চার বাইটে প্যাক করে। প্রতিটি মানের পূর্ণসংখ্যা এবং ভগ্নাংশের জন্য সঞ্চয় পৃথকভাবে নির্ধারিত হয়। নয়টি সংখ্যার প্রতিটি সংখ্যার জন্য চারটি বাইটের প্রয়োজন হয় এবং "অবশিষ্ট" অঙ্কগুলি চার বাইটের কিছু অংশের প্রয়োজন হয়। অতিরিক্ত সংখ্যার জন্য প্রয়োজনীয় স্টোরেজটি নিম্নলিখিত টেবিল দ্বারা দেওয়া হয়েছে।

TIME, DATETIME, এবং TIMESTAMP কলামগুলির জন্য তারিখ এবং সময়ের ধরণের স্টোরেজ প্রয়োজনীয়তা, মাইএসকিউএল 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

মাইএসকিউএল 5.6.4 হিসাবে, YEAR এবং তারিখের জন্য সঞ্চয়স্থান অপরিবর্তিত রয়েছে। তবে, TIME, DATETIME এবং TIMESTAMP আলাদাভাবে উপস্থাপিত হয়। ডেটটাইমটি আরও দক্ষতার সাথে প্যাক করা হয়, অবিভাজনীয় অংশের জন্য 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) সমান এবং একই স্টোরেজ প্রয়োজন require

অস্থায়ী মানগুলির অভ্যন্তরীণ উপস্থাপনা সম্পর্কে বিশদ জন্য, মাইএসকিউএল অভ্যন্তরীণ দেখুন: গুরুত্বপূর্ণ অ্যালগরিদম এবং কাঠামো।

স্ট্রিং ধরণের স্টোরেজ প্রয়োজনীয়তা নিম্নলিখিত সারণিতে এম অ্যানবাইনারি স্ট্রিং ধরণের এবং বাইনারি স্ট্রিং ধরণের বাইটগুলির জন্য অক্ষরগুলিতে ঘোষিত কলাম দৈর্ঘ্যের প্রতিনিধিত্ব করে। এল প্রদত্ত স্ট্রিং মানের বাইটে প্রকৃত দৈর্ঘ্যকে উপস্থাপন করে।

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.