อาจมีกรณีที่เธรดจำนวนมากทำงานบนเซิร์ฟเวอร์ MySQL ของคุณ ในบรรดาเธรดเหล่านี้ เธรดที่ไม่ได้ใช้งานอาจทำให้เกิดข้อผิดพลาดบนเซิร์ฟเวอร์ MySQL ของคุณ เว้นแต่คุณจะดูกระบวนการที่กำลังทำงานอยู่และฆ่ากระบวนการที่คุณไม่ต้องการ
MySQL เป็น DBMS เชิงสัมพันธ์ที่มีตัวเลือกต่างๆ สำหรับผู้ใช้ในการแสดงรายการกระบวนการที่กำลังทำงานอยู่ เราจะอธิบายวิธีแสดงกระบวนการ MySQL ที่กำลังทำงานอยู่
การระบุกระบวนการ MySQL
เมื่อคุณมีฐานข้อมูล MySQL บนเซิร์ฟเวอร์ของคุณ บางครั้งคุณอาจต้องตรวจสอบสถานะเพื่อตรวจสอบปริมาณโหลดที่มี เมื่อคุณสังเกตเห็นความล่าช้าหรือปัญหาเกี่ยวกับการสืบค้นต่างๆ บนฐานข้อมูล MySQL ของคุณ แสดงว่าคุณมีเธรดมากเกินไปและไม่ได้ใช้งาน
ดังนั้น การทำความเข้าใจว่าเธรดใดทำให้เกิดปัญหาและวิธีลดภาระให้น้อยที่สุดจึงเป็นประโยชน์ ด้วย MySQL คุณสามารถใช้ตัวเลือกต่างๆ เพื่อวิเคราะห์กระบวนการที่กำลังทำงานอยู่ เราจะพูดถึงสองตัวเลือกที่จะช่วยแสดงกระบวนการ MySQL
วิธีที่ 1: ผ่านคำสั่ง Show Processlist
เมื่อคุณเข้าถึง MySQL บนบรรทัดคำสั่ง คุณสามารถใช้คำสั่ง SHOW PROCESSLIST เพื่อแสดงข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ทั้งหมดในเซิร์ฟเวอร์ MySQL ของคุณ เมื่อดำเนินการ จะให้ภาพรวมของการเชื่อมต่อต่างๆ แก่เซิร์ฟเวอร์และข้อมูลของการเชื่อมต่อเหล่านั้น เช่น สถานะ เวลา เป็นต้น
ต่อไปนี้เป็นคำสั่งในการดำเนินการ:
แสดงรายการกระบวนการ;จดบันทึกคอลัมน์ต่างๆ จากเอาต์พุต เรามาคุยกันสั้นๆ กัน:
- รหัส – แสดง ID กระบวนการของกระบวนการที่กำลังทำงานอยู่ ในกรณีของกระบวนการที่กำลังทำงานอยู่จำนวนมาก แต่ละกระบวนการจะมี ID ที่ไม่ซ้ำกัน
- ผู้ใช้ – มันแสดงถึงผู้ใช้ที่เกี่ยวข้องกับเธรดเฉพาะ
- เจ้าภาพ – มันแสดงโฮสต์ที่ไคลเอนต์เฉพาะเชื่อมต่ออยู่ เป็นชื่อโฮสต์ของไคลเอ็นต์เฉพาะที่ออกคำสั่ง
- ฐานข้อมูล – หากเลือกฐานข้อมูลสำหรับเธรดเฉพาะ ฐานข้อมูลนั้นจะปรากฏใต้คอลัมน์ DB หากแสดงเป็น NULL แสดงว่าไม่ได้เลือกฐานข้อมูล
- สั่งการ – มันแสดงคำสั่งที่กำลังดำเนินการโดยเธรด
- เวลา – สำหรับเธรดเฉพาะ คอลัมน์นี้จะบอกว่าเธรดอยู่ในสถานะปัจจุบันนานแค่ไหน
- สถานะ – มันแสดงให้เห็นว่าเธรดมีส่วนร่วมในสถานะหรือเหตุการณ์ใด
- ข้อมูล – แสดงคำสั่งที่เธรดกำลังดำเนินการอยู่
ในกรณีนี้ เอาต์พุตก่อนหน้าคือผลลัพธ์ที่เราได้รับจากคำสั่ง SHOW PROCESSLIST ผลลัพธ์จะแสดงในลักษณะตาราง สมมติว่าคุณต้องการดูผลลัพธ์เดียวกันแต่เป็นแนวตั้ง คุณสามารถใช้คำสั่งต่อไปนี้แทน:
แสดงรายการกระบวนการ\G;เลือกใส่ [FULL] ในคำสั่งเพื่อให้แน่ใจว่าคุณจะไม่พลาดกระบวนการที่กำลังทำงานอยู่
วิธีที่ 2: ผ่านตัวเลือก INFORMATION_SCHEMA.PROCESSLIST
MySQL มีตาราง INFORMATION_SCHEMA.PROCESSLIST ที่มีรายการการเชื่อมต่อที่ใช้งานอยู่ทั้งหมดซึ่งกำลังไปยังเซิร์ฟเวอร์ เมื่อเข้าถึงตารางนี้ คุณจะได้รับรายละเอียดของการเชื่อมต่อที่แอ็คทีฟทั้งหมดเพื่อทราบโฮสต์ ID กระบวนการ สถานะ คำสั่ง ฯลฯ ซึ่งคล้ายกับสิ่งที่คุณได้รับจากคำสั่ง SHOW PROCESSLIST
นี่คือคำสั่งในการดำเนินการ:
เลือก * จาก INFORMATION_SCHEMA.PROCESSLIST;เมื่อคุณรันคำสั่ง คุณจะได้ผลลัพธ์ที่คล้ายกับผลลัพธ์ต่อไปนี้ซึ่งแสดงรายละเอียดทั้งหมดของกระบวนการทำงานของ MySQL:
วิธีฆ่ากระบวนการทำงานของ MySQL
สมมติว่าคุณมีปัญหากับกระบวนการที่กำลังทำงานอยู่ คุณสามารถฆ่ากระบวนการที่ไม่ได้ใช้งานเพื่อลดเวลาในการโหลดของเซิร์ฟเวอร์และเพิ่มประสิทธิภาพ งานแรกคือการระบุ ID ของเธรดเฉพาะ เรามีสองวิธีในการค้นหา ID ของเธรดใดๆ
เมื่อคุณมี ID แล้ว คุณสามารถดำเนินการคำสั่ง “kill” ด้วยไวยากรณ์ต่อไปนี้:
ฆ่า <รหัสกระบวนการ>;เมื่อคุณดำเนินการคำสั่ง คุณจะได้รับผลลัพธ์ที่สำเร็จซึ่งแสดงแถวที่ได้รับผลกระทบ และแบบสอบถามจะตัดการเชื่อมต่อจากเซิร์ฟเวอร์ นั่นเป็นวิธีที่คุณฆ่ากระบวนการ MySQL
บทสรุป
MySQL นำเสนอสองวิธีที่คุณสามารถใช้เพื่อแสดงกระบวนการที่กำลังทำงานอยู่ เราได้กล่าวถึงตัวเลือกทั้งสอง ไวยากรณ์ที่กำหนดและคำสั่งตัวอย่าง เพื่อช่วยให้คุณเข้าใจ MySQL SHOW PROCESSLIST ถึงกระนั้น เราได้เห็นวิธีที่คุณสามารถฆ่ากระบวนการที่กำลังทำงานอยู่ หวังว่าตอนนี้คุณคงเข้าใจวิธีการทำงานของ MySQL SHOW PROCESSLIST แล้ว