เพิ่มประสิทธิภาพ INFORMATION_SCHEMA.key_column_usage
ปิด innodb_stats_on_metadata เพื่อลดเวลาการสแกน Metadata เมื่อ Query INFORMATION_SCHEMA
คำสั่ง
SET GLOBAL innodb_stats_on_metadata = 0;
ทดสอบประสิทธิภาพ
SELECT REFERENCED_TABLE_NAME, TABLE_NAME, COLUMN_NAME, CONSTRAINT_SCHEMA FROM INFORMATION_SCHEMA.key_column_usage;
ผลลัพธ์
คืน 674 แถวใน 0.28 วินาที (เร็วกว่าเดิมมาก)
คำอธิบาย
innodb_stats_on_metadata = ON (1)- อัปเดตสถิติทุกครั้งที่เข้าถึง Metadata (ช้า)innodb_stats_on_metadata = OFF (0)- ไม่อัปเดตสถิติอัตโนมัติ (เร็ว)- เป็น Global variable ต้องมีสิทธิ์ SUPER
- สถิติจะเก่า แต่ Query INFORMATION_SCHEMA จะเร็วขึ้นมาก
ข้อควรระวัง
- อาจส่งผลต่อ Query Optimizer ที่ใช้สถิติ
- ควรรัน
ANALYZE TABLEเป็นระยะเพื่ออัปเดตสถิติ - ตั้งค่าใน my.ini เพื่อทำให้ถาวร:
innodb_stats_on_metadata = 0