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

แก้ปัญหา INFORMATION_SCHEMA.key_column_usage ช้าใน MySQL

เพิ่มประสิทธิภาพ 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