มารู้จักเครื่องมือ Profiling, Explain บน MySQL/MariaDB กันเถอะ

ในการเรียนการสอนวิชา Database Laboratory ในคาบที่ผ่านมาเป็นเนื้อหาเกี่ยวกับ Index แล้วเราจะรู้ได้ยังไงว่าหลังจากสร้าง Index แล้วเกิดความแตกต่างยังไงบ้าง วันนี้ผมจะแนะนำการใช้เครื่องมือสองตัวคือ Profiling และ Explain เพื่อตอบคำถามนี้ครับ

ข้อมูลตัวอย่างที่ใช้มีชื่อว่า Hacker News ที่เอามาจาก Google BigQuery Public Dataset

Profiling

เป็นเครื่องมือที่รวบรวมข้อมูลว่าในการทำงานหนึ่ง Query เกิดการใช้ทรัพยากรณ์จุดไหน อย่างไร แต่ก่อนจะใช้เราต้องเปิดใช้งานก่อนด้วยคำสั่ง

SET profiling = 1;

หลังจากนั้นก็ใช้งาน Query ได้ตามปกติ และเมื่อต้องการดูข้อมูลอย่างคร่าวให้ใช้คำสั่ง

SHOW PROFILES;

และถ้าต้องการดูแบบละเอียดให้ใช้

SHOW PROFILE FOR QUERY <QUERY_ID>;

ตัวอย่างการใช้งาน Profiling เพื่อดูว่าเมื่อเราสร้าง Index แล้วเร็วขึ้นจริงไหม

Explain

หรือ DESCRIBE เป็นอีกเครื่องมือที่บอกเราว่าเมื่อเราสั่ง Query ไปแล้ว Optimizer ของ DBMS ดำเนินการกับมันอย่างไร ใช้ Key ไหนหรือ Index ใด เป็นต้น การใช้งานคือเพิ่มคำว่า EXPLAIN ไปหน้า SELECT, UPDATE หรือ DELETE Query การทำงานจะต่างกับ ANALYZE ตรงที่เป็นแบบ Dry Run คือทดลองแต่ไม่ดำเนินการจริง

ตัวอย่างการใช้งานกับ Query เดียวกับด้านบนก่อนและหลังสร้าง Index จะเห็นว่าเมื่อสร้าง Index แล้วจะแสดงข้อมูลการเรียกใช้ด้วย

ทั้งหมดก็เป็นเครื่องมือเบื้องต้นสำหรับการหาคำตอบว่าเกิดอะไรขึ้นเมื่อเรารัน Query บน MySQL หรือ MariaDB ที่ผมคิดว่านักศึกษาวิศวคอมพิวเตอร์ควรจะรู้จักไว้

References

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.