মাইএসকিউএলে ভারচার (সর্বোচ্চ) এর সমতুল্য কত?
মাইএসকিউএলে ভারচার (সর্বোচ্চ) এর সমতুল্য কত?
উত্তর:
ভার্চারের সর্বোচ্চ দৈর্ঘ্য মাইএসকিউএলে সর্বাধিক সারি আকারের সাপেক্ষে, যা 64KB (বিএলওবি গণনা করছে না):
VARCHAR(65535)
তবে নোট করুন যে আপনি যদি বহু-বাইট অক্ষর সেট ব্যবহার করেন তবে সীমাটি কম থাকবে:
VARCHAR(21844) CHARACTER SET utf8
এখানে কিছু উদাহরন:
সর্বাধিক সারির আকার 65535, তবে একটি বার্চারে প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্য এনকোড করার জন্য একটি বাইট বা দুটিও অন্তর্ভুক্ত থাকে। সুতরাং আপনি সর্বাধিক সারি আকারের বার্চারটি ঘোষণা করতে পারবেন না, এমনকি এটি সারণীতে একমাত্র কলামও রয়েছে।
mysql> CREATE TABLE foo ( v VARCHAR(65534) );
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
তবে আমরা যদি দৈর্ঘ্য হ্রাস করার চেষ্টা করি তবে আমরা সর্বাধিক দৈর্ঘ্যের সন্ধান করি:
mysql> CREATE TABLE foo ( v VARCHAR(65532) );
Query OK, 0 rows affected (0.01 sec)
এখন আমরা যদি টেবিল স্তরে মাল্টিবাইট চারসেট ব্যবহার করার চেষ্টা করি তবে আমরা দেখতে পাচ্ছি যে এটি প্রতিটি চরিত্রকে একাধিক বাইট হিসাবে গণনা করে। ইউটিএফ 8 স্ট্রিংগুলি অগত্যা স্ট্রিং প্রতি একাধিক বাইট ব্যবহার করে না , তবে মাইএসকিউএল ধরে নিতে পারে না যে আপনি আপনার ভবিষ্যতের সন্নিবেশগুলি একক-বাইট অক্ষরে সীমাবদ্ধ রাখবেন।
mysql> CREATE TABLE foo ( v VARCHAR(65532) ) CHARSET=utf8;
ERROR 1074 (42000): Column length too big for column 'v' (max = 21845); use BLOB or TEXT instead
শেষ ত্রুটিটি আমাদের যা বলেছিল সত্ত্বেও, ইনোডিবি এখনও 21845 এর দৈর্ঘ্য পছন্দ করে না।
mysql> CREATE TABLE foo ( v VARCHAR(21845) ) CHARSET=utf8;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
আপনি যদি এটি 21845 * 3 = 65535 গণনা করেন তবে এটি সঠিক ধারণা তৈরি করে, যা কোনওভাবেই কাজ করে না। 21844 * 3 = 65532, যা কাজ করে।
mysql> CREATE TABLE foo ( v VARCHAR(21844) ) CHARSET=utf8;
Query OK, 0 rows affected (0.32 sec)
DEFAULT
না কলামটির জন্য কোনও মান ঘোষণা করতে চান । পাঠ্য বা বিএলওবি প্রকারের মাধ্যমে তা করতে পারে না।
TEXT
দৈর্ঘ্যের সীমা K৪ কে। MEDIUMTEXT
দৈর্ঘ্যের সীমা 16M। LONGTEXT
দৈর্ঘ্যের সীমা 4G।
varchar(max)
কলামের ধরণের ক্ষেত্রে প্রযোজ্য নয় ।
TLDR; মাইএসকিউএলের সমতুল্য ধারণা নেই varchar(max)
, এটি একটি এমএস এসকিউএল সার্ভার বৈশিষ্ট্য।
varchar(max)
মাইক্রোসফ্ট এসকিউএল সার্ভারের একটি বৈশিষ্ট্য।
মাইক্রোসফ্ট এসকিউএল সার্ভার সংস্করণে ২০০৫ এর সংস্করণের পূর্বে কোনও কলাম সংরক্ষণ করতে পারে এমন পরিমাণের পরিমাণ 8KB এর মধ্যে সীমাবদ্ধ ছিল। অর্ডার 8KB চেয়ে বেশি সঞ্চয় করতে আপনি ব্যবহার করতে হবে TEXT
, NTEXT
অথবা BLOB
কলাম ধরনের, এই কলামের ধরনের 8K পৃষ্ঠাগুলির একটি সংগ্রহ হিসাবে তাদের তথ্য সংরক্ষণ করা টেবিলের তথ্য পেজ থেকে আলাদা; তারা প্রতি সারি 2GB অবধি স্টোরেজ সমর্থন করে।
এই কলাম ধরনের বড় সতর্কীকরণ ছিল যে তারা সাধারণত অ্যাক্সেস করতে বিশেষ ফাংশন এবং বিবৃতি প্রয়োজন এবং ডেটা সংশোধন (যেমন READTEXT
, WRITETEXT
এবং UPDATETEXT
)
এসকিউএল সার্ভার 2005-এ, varchar(max)
বৃহত্তর কলামগুলিতে ডেটা পুনরুদ্ধার এবং সংশোধন করতে ব্যবহৃত ডেটা এবং কোয়েরিগুলিকে একীকরণের জন্য প্রবর্তিত হয়েছিল। জন্য তথ্য varchar(max)
কলাম টেবিল তথ্য পৃষ্ঠাগুলির সাথে ইনলাইন সংরক্ষণ করা হয়।
যেমন MAX কলামে ডেটা একটি 8 কেবি ডেটা পৃষ্ঠা পূরণ করে একটি ওভারফ্লো পৃষ্ঠা বরাদ্দ করা হয় এবং পূর্ববর্তী পৃষ্ঠাটি এতে লিঙ্কযুক্ত তালিকা গঠন করে। ভিন্ন TEXT
, NTEXT
এবং কলামের ধরণ সব অন্যান্য কলাম ধরনের হিসাবে একই ক্যোয়ারী শব্দার্থবিদ্যা সমর্থন করে।BLOB
varchar(max)
তাই varchar(MAX)
সত্যিই মানে varchar(AS_MUCH_AS_I_WANT_TO_STUFF_IN_HERE_JUST_KEEP_GROWING)
এবং varchar(MAX_SIZE_OF_A_COLUMN)
।
varchar(max)
মাইএসকিউএল হিসাবে একই পরিমাণে স্টোরেজ পেতে আপনার এখনও একটি BLOB
কলামের ধরণের অবলম্বন করতে হবে । এই নিবন্ধটি মাইএসকিএলে প্রচুর পরিমাণে ডেটা দক্ষতার সাথে সঞ্চয় করার একটি খুব কার্যকর পদ্ধতি নিয়ে আলোচনা করেছে।
varchar(max)
তা বোঝাতে হলে আসলে কী বোঝায়।
একটি ভারচারের সর্বোচ্চ দৈর্ঘ্য
65535
অক্ষরের সেটটিতে অক্ষরের সর্বোচ্চ বাইট দৈর্ঘ্য দ্বারা বিভক্ত কলামটি সেট করা হয়েছে (উদাঃ utf8 = 3 বাইট, ucs2 = 2, লাতিন 1 = 1)।
দৈর্ঘ্য সঞ্চয় করতে বিয়োগ 2 বাইট
অন্যান্য সমস্ত কলামের দৈর্ঘ্য বিয়োগ করুন
বিয়োগযোগ্য প্রতি 8 টি কলামের জন্য বিয়োগ 1 বাইট। যদি আপনার কলামটি নাল / নাল না থাকে তবে এটি নাইট মাস্ক নামে একটি বাইট / বাইটে এক বিট হিসাবে সঞ্চিত হয়ে যায়, কলাম প্রতি 1 বিট যে নল হয়।
টেবিলের পরিবর্তন করুন
টেবিল পরিবর্তন করুন
টেবিল পরিবর্তন করুন
সীমা আকারের অধীনে যখন মাইএসকিএল রূপান্তরকারী কলামটি ভ্রচার থেকে টেক্সটে রূপান্তর করা হচ্ছে !!!
mysql> CREATE TABLE varchars1(ch3 varchar(6),ch1 varchar(3),ch varchar(4000000))
;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> SHOW WARNINGS;
+-------+------+---------------------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------------------+
| Note | 1246 | Converting column 'ch' from VARCHAR to TEXT |
+-------+------+---------------------------------------------+
1 row in set (0.00 sec)
mysql>