ก่อนที่จะสร้างตารางที่บีบอัด ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานตัวเลือกการกำหนดค่า innodb_file_per_table และตั้งค่า innodb_file_format เป็น Barracuda พารามิเตอร์เหล่านี้สามารถพบได้ในไฟล์กำหนดค่า MySQL my.cnf หรือ my.ini หรือด้วยคำสั่ง SET โดยไม่ต้องปิดเซิร์ฟเวอร์ MySQL
หากต้องการเปิดใช้งานการบีบอัดสำหรับตาราง สามารถใช้คำสั่ง 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 จะถือเป็น 16KB ขึ้นอยู่กับการรวมกันของค่าตัวเลือก MySQL ใช้ขนาดหน้า 1KB, 2KB, 4KB, 8KB หรือ 16KB สำหรับไฟล์ .ibd ของตาราง
-
อัลกอริธึมการบีบอัดจริงไม่ได้รับผลกระทบจากค่า KEY_BLOCK_SIZE
-
ดัชนีทั้งหมดของตาราง รวมถึงดัชนีคลัสเตอร์จะถูกบีบอัดโดยใช้ขนาดหน้าเดียวกัน ซึ่งระบุไว้ในคำสั่ง CREATE TABLE หรือ ALTER TABLE แอตทริบิวต์ของตาราง เช่น ROW_FORMAT และ KEY_BLOCK_SIZE ไม่ถือว่าเป็นส่วนหนึ่งของไวยากรณ์ CREATE INDEX สำหรับตาราง InnoDB ดังนั้นระบบจะละเว้นหากมีการระบุไว้