একটি কমপ্রেসড টেবিল তৈরি করার আগে নিশ্চিত করুন যে 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_SIZEInnoDB টেবিলের জন্যCREATE INDEXসিন্ট্যাক্সের অংশ নয়, তাই সেগুলো নির্দিষ্ট করলে উপেক্ষা করা হয়।