mysql จะมีออปชันสำหรับบันทึกเหตุการณ์หรือ log สำหรับการใช้คำสั่งของ sql โดยแบ่งออกเป็น 2 ส่วน คือ general และ slow queries สำหรับ general เป็นไฟล์เก็บข้อมูลคำสั่งทั้งหมดของ sql ที่รัน โดยไฟล์นี้จะใหญ่มาก ก็ต้องมีการจัดการให้ดี
ส่วน slow queries เป็นไฟล์เก็บคำสั่ง sql ที่สั่งรันแล้วใช้เวลานาน อาจจะตั้งไว้เช่น 1 วินาท 2 วินาที หรือตามที่เรากำหนด
ตัวอย่างไฟล์ mysql.log |
ในกรณีนี้ผู้เขียนมีความต้องการดึงเอาเฉพาะคำสั่งที่เป็น SELECT ทั้งหมดออกจากไฟล์ เพื่อเอาไปรันในการจำลองการทำงาน และการดึงข้อมูลหนักๆ เพื่อวิเคราะห์ประสิทธิภาพของ mysql จากรูปแบบไฟล์แล้วจะต้องกำหนดขอบเขตดังนี้
- เลือกเฉพาะบรรทัดที่มีคำสั่ง SELECT
- ตัดเอาข้อความตั้งแต่ SELECT ไปจนหมดบรรทัด
- เพิ่มเครื่องหมาย ; ต่อท้ายในแต่ละบรรทัด
สุดท้ายให้เก็บไว้เป็นไฟล์ sql เพื่อให้โปรแกรมจำลองเปิดอ่านและสั่งรันคำสั่งเหล่านั้นภายหลัง หรือสั่งรันจากคำสั่งด้วย mysql client
1. เลือกเฉพาะบรรทัดที่มีคำสั่ง SELECT
คำสั่งที่ใช้
cat mysql.log | grep "SELECT " > mysql.txt
2. ตัดเฉพาะข้อความตั้งแต่ SELECT เป็นต้นไป
คำสั่งที่ใช้
grep -o "SELECT.*" mysql.txt > mysql_select.txt
3. เพิ่มเครื่องหมาย ; ต่อท้ายในแต่ละบรรทัด
คำสั่งที่ใช้
sed 's/$/ ;/' mysql_select.txt > mysql_select.sql
สุดท้ายก็จะได้ไฟล์ mysql_select.sql ที่เป็นคำสั่ง sql และมีเครื่องหมาย ; ปิดท้าย ทำให้เราสามารถใช้คำสั่ง mysql < mysql_select.sql ได้โดยไม่ต้องใช้โปรแกรมอื่นมาอ่านไฟล์แล้วส่งต่อไปยัง mysql
ไม่มีความคิดเห็น:
แสดงความคิดเห็น