কম্পিউটার টিউটোরিয়াল

MySQL কমপ্রেশন সক্ষম করা


একটি কমপ্রেসড টেবিল তৈরি করার আগে নিশ্চিত করুন যে innodb_file_per_table কনফিগারেশন অপশন সক্রিয় এবং innodb_file_format Barracuda-এ সেট করা আছে। এই প্যারামিটারগুলো MySQL কনফিগারেশন ফাইল my.cnf বা my.ini-তে পাওয়া যায়, অথবা সার্ভার বন্ধ না করে SET স্টেটমেন্ট দিয়েও সেট করা যায়।

একটি টেবিলের জন্য কমপ্রেশন সক্ষম করতে ROW_FORMAT=COMPRESSED, KEY_BLOCK_SIZE, বা উভয়ই CREATE TABLE বা ALTER TABLE স্টেটমেন্টে ব্যবহার করা যায়।

কমপ্রেসড টেবিল তৈরি করার স্টেটমেন্টগুলো নিচে দেওয়া হলো:

ক্যোয়ারি

SET GLOBAL innodb_file_per_table=1; SET GLOBAL innodb_file_format=Barracuda; CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;

এখানে,

  • ROW_FORMAT=COMPRESSED নির্দিষ্ট করা থাকলে, KEY_BLOCK_SIZE বাদ দেওয়া যায়।

  • ডিফল্ট পেজ সাইজ মান ব্যবহার হয়, যা innodb_page_size मानের অর্ধেকের সমান।

  • KEY_BLOCK_SIZE নির্দিষ্ট করা থাকলে, ROW_FORMAT=COMPRESSED বাদ দেওয়া যায়।

  • কমপ্রেশন স্বয়ংক্রিয়ভাবে সক্ষম হয়।

  • KEY_BLOCK_SIZE অ্যাট্রিবিউটের সেরা মান নির্ধারণের জন্য একই টেবিলের একাধিক কপি ভিন্ন ভিন্ন মান দিয়ে তৈরি করে ফলাফলের .ibd ফাইল আকার মাপা যায় এবং বাস্তব ওয়ার্কলোডে পারফরম্যান্স পরীক্ষা করা যায়।

  • KEY_BLOCK_SIZE মান একটি হিন্ট হিসেবে বিবেচিত হয়।

  • innodb_strict_mode=ON থাকলে, অবৈধ KEY_BLOCK_SIZE মান দিলে এরর দেখায়।

  • InnoDB ডেটা পেজের ডিফল্ট আনকমপ্রেসড আকার ১৬KB। অপশন কম্বিনেশনের ওপর নির্ভর করে MySQL টেবিলের .ibd ফাইলের জন্য ১KB, ২KB, ৪KB, ৮KB, বা ১৬KB পেজ সাইজ ব্যবহার করে।

  • 실제 কমপ্রেশন অ্যালগরিদম KEY_BLOCK_SIZE মান থেকে প্রভাবিত হয় না।

  • একটি টেবিলের সব ইন্ডেক্স (ক্লাস্টারড ইন্ডেক্স সহ) একই পেজ সাইজে কমপ্রেসড হয় যা CREATE TABLE বা ALTER TABLE স্টেটমেন্টে নির্দিষ্ট করা হয়। টেবিল অ্যাট্রিবিউট যেন ROW_FORMAT এবং KEY_BLOCK_SIZE InnoDB টেবিলের জন্য CREATE INDEX সিন্ট্যাক্সের অংশ নয়, তাই সেগুলো নির্দিষ্ট করলে উপেক্ষা করা হয়।


  1. MySQL প্রোসিজারের ভিতরে অস্থায়ী টেবিল তৈরি করা

  2. MySQL-এ স্টোরড প্রোসিজার ব্যবহার করে ডাইনামিক টেবিল তৈরি করা

  3. MySQL-এ UNIQUE কনস্ট্রেইন্ট দিয়ে ডুপ্লিকেট বাদ দিয়ে ইনসার্ট করা

  4. MySQL-এ INFORMATION_SCHEMA ব্যবহার করে টেবিলের কলাম সংখ্যা বের করা