Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

วิธีตั้งค่า Slow Query Logging ใน MySQL

คู่มือนี้จะอธิบายวิธีการตั้งค่า "Slow Query Logging" ใน MySQL เพื่อให้คุณสามารถระบุคำสั่งที่ทำให้ฐานข้อมูลทำงานช้าลงได้

หากคุณดูแลเซิร์ฟเวอร์ MySQL ในระบบจริง (Production) น่าจะเคยเจอปัญหาที่เซิร์ฟเวอร์ทำงานช้าลงบ้าง การค้นหาสาเหตุพื้นฐานอาจใช้เวลานานมาก MySQL มีฟีเจอร์ช่วยแก้ปัญหานี้คือการบันทึกคำสั่งที่ทำงานช้า (Slow Query Log) เมื่อเซิร์ฟเวอร์ทำงานช้าลง คุณสามารถเปิดไฟล์ล็อกนี้ในโปรแกรมแก้ไขข้อความเพื่อดูว่าคำสั่งไหนทำงานช้า

ขั้นตอนการตั้งค่า

  1. เปิดไฟล์การตั้งค่า MySQL (my.cnf) ใน Linux จะอยู่ที่ /etc/my.cnf หรือ /etc/mysql/my.cnf
  2. ค้นหาพารามิเตอร์ slow_query_log หากยังไม่ได้ตั้งค่า ให้เพิ่มบรรทัดต่อไปนี้:
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/mysql-slow.log
    หมายเหตุ: ในเวอร์ชันเก่าใช้ log-slow-queries แต่เวอร์ชันใหม่ใช้ slow_query_log แทน
  3. ตั้งค่าเวลาที่ถือว่าเป็น "Slow Query" โดยใช้พารามิเตอร์ long_query_time ตัวอย่างตั้งค่าเป็น 2 วินาที (ค่าเริ่มต้นคือ 10 วินาที):
    long_query_time = 2
  4. รีสตาร์ทเซิร์ฟเวอร์ MySQL เพื่อให้การตั้งค่ามีผล:
    sudo systemctl restart mysql
  5. ตรวจสอบไฟล์ล็อก ที่ /var/log/mysql/mysql-slow.log คำสั่งที่ทำงานนานกว่าที่ตั้งค่าจะถูกบันทึกไว้

เคล็ดลับเพิ่มเติม

  • ตั้งค่า log_queries_not_using_indexes = 1 เพื่อบันทึกคำสั่งที่ไม่ได้ใช้ดัชนี (Index) ด้วย
  • ใช้คำสั่ง mysqldumpslow เพื่อวิเคราะห์ไฟล์ Slow Query Log ให้อ่านง่ายขึ้น
  • ตั้งค่า Cron Job เพื่อส่งไฟล์ล็อกมาทางอีเมลทุกไม่กี่วัน
  • ตรวจสอบไฟล์ล็อกเป็นระยะเพื่อปรับปรุงประสิทธิภาพฐานข้อมูล

การตั้งค่า Slow Query Logging จะช่วยให้การแก้ไขปัญหาประสิทธิภาพ MySQL ง่ายและรวดเร็วขึ้นมาก