ปัญหา: 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