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

OPTIMIZE TABLE ป้องกัน Fragmentation จาก INSERT/UPDATE/DELETE

ปัญหา: Table Fragmentation

การ INSERT/UPDATE/DELETE มากทำให้พื้นที่จัดเก็บแยกเป็นชิ้นๆ (Fragment) → ประสิทธิภาพลดลง

คำสั่งแก้ไข

OPTIMIZE TABLE table_name;

ตัวอย่าง

mysql> OPTIMIZE TABLE student_info\G
*************************** 1. row ***************************
Table: query.student_info
Op: optimize
Msg_type: status
Msg_text: OK
1 row in set (1.34 sec)

สิ่งที่ OPTIMIZE TABLE ทำ

  • Reorganize physical storage (Defragment)
  • Rebuild indexes
  • Reclaim unused space
  • Update index statistics

เมื่อควรใช้

  • หลัง DELETE จำนวนมาก
  • หลัง UPDATE คอลัมน์ Variable-length (VARCHAR, TEXT, BLOB) บ่อย
  • ตารางที่มีการ INSERT/DELETE สลับกันมาก
  • รายสัปดาห์/รายเดือน สำหรับตารางที่ใช้งานหนัก

ข้อควรระวัง

  • ล็อคตารางระหว่างทำงาน (อาจนานกับตารางใหญ่)
  • InnoDB: ทำงานแบบ Online (อนุญาต READ/WRITE ได้บางส่วน)
  • MyISAM: ล็อคเต็มตาราง
  • Command line: mysqlcheck -u root --optimize db_name