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

เปิดใช้งานการบีบอัด MySQL


ก่อนที่จะสร้างตารางที่บีบอัด ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานตัวเลือกการกำหนดค่า 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 ดังนั้นระบบจะละเว้นหากมีการระบุไว้