Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เปิดใช้งานการบีบอัดตาราง (Table Compression) ใน MySQL

ก่อนสร้างตารางบีบอัด ต้องตรวจสอบให้แน่ใจว่า:

  • innodb_file_per_table=ON
  • innodb_file_format=Barracuda

ตั้งค่าได้ใน my.cnf/my.ini หรือด้วย SET โดยไม่ต้องรีสตาร์ท

การสร้างตารางบีบอัด

ใช้ clause 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 เป็นค่าประมาณ (Hint) ไม่ใช่ค่าบังคับ
  • หาก innodb_strict_mode=ON และระบุ KEY_BLOCK_SIZE ไม่ถูกต้อง -> Error

ขนาดหน้า (Page Size)

ขนาดเริ่มต้น 16KB ขึ้นกับตัวเลือก MySQL ใช้ 1KB, 2KB, 4KB, 8KB, หรือ 16KB สำหรับไฟล์ .ibd

การทดสอบค่า KEY_BLOCK_SIZE ที่ดีที่สุด

  1. สร้างตารางเดียวกันหลาย bản สลับค่า KEY_BLOCK_SIZE
  2. วัดขนาดไฟล์ .ibd ที่ได้
  3. ทดสอบประสิทธิภาพกับ Workload จริง

ข้อสังเกตเพิ่มเติม

  • ดัชนีทั้งหมด (รวม Clustered Index) ใช้ขนาดหน้าเดียวกัน
  • ROW_FORMAT และ KEY_BLOCK_SIZE ไม่ใช่ส่วนของ CREATE INDEX สำหรับ InnoDB (ถูกละเว้น)
  • อัลกอริทึมการบีบอัดไม่ได้รับผลกระทบจาก KEY_BLOCK_SIZE