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

ANALYZE TABLE ช่วยบำรุงรักษาตาราง MySQL อย่างไร

อัปเดตสถิติดัชนี (Key Distribution)

Query Optimizer ใช้สถิติเพื่อตัดสินใจ: JOIN order, Index selection ผิดพลาด → Query ช้า

เมื่อสถิติล้าสมัย

  • หลัง INSERT/UPDATE/DELETE จำนวนมาก
  • Key distribution ไม่ตรงกับข้อมูลจริง
  • Optimizer เลือกแผนการรัน Query ที่ไม่เหมาะสม

คำสั่งแก้ไข

ANALYZE TABLE table_name;

ตัวอย่าง

mysql> ANALYZE TABLE student_info\G
*************************** 1. row ***************************
Table: query.student_info
Op: analyze
Msg_type: status
Msg_text: OK
1 row in set (0.22 sec)

คำสั่งเทียบเท่าจาก Command Line

mysqlcheck -u root --analyze db_name

เมื่อควรรัน

  • หลังโหลดข้อมูลมาก (Bulk insert)
  • หลังปรับโครงสร้างตาราง (ALTER TABLE)
  • ตารางที่มีการ UPDATE/DELETE บ่อย
  • ตารางใหญ่ที่ Query เริ่มช้าลง

ข้อควรระวัง

  • ล็อคตารางระหว่างรัน (READ LOCK)
  • อาจใช้เวลานานกับตารางใหญ่
  • InnoDB: สถิติเป็นประมาณการ (sampling) ไม่ได้นับทุกแถว