วิธีแสดงกระบวนการทำงานของ MySQL

Withi Saedng Krabwnkar Thangan Khxng Mysql



อาจมีกรณีที่เธรดจำนวนมากทำงานบนเซิร์ฟเวอร์ MySQL ของคุณ ในบรรดาเธรดเหล่านี้ เธรดที่ไม่ได้ใช้งานอาจทำให้เกิดข้อผิดพลาดบนเซิร์ฟเวอร์ MySQL ของคุณ เว้นแต่คุณจะดูกระบวนการที่กำลังทำงานอยู่และฆ่ากระบวนการที่คุณไม่ต้องการ

MySQL เป็น DBMS เชิงสัมพันธ์ที่มีตัวเลือกต่างๆ สำหรับผู้ใช้ในการแสดงรายการกระบวนการที่กำลังทำงานอยู่ เราจะอธิบายวิธีแสดงกระบวนการ MySQL ที่กำลังทำงานอยู่







การระบุกระบวนการ MySQL

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



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



วิธีที่ 1: ผ่านคำสั่ง Show Processlist

เมื่อคุณเข้าถึง MySQL บนบรรทัดคำสั่ง คุณสามารถใช้คำสั่ง SHOW PROCESSLIST เพื่อแสดงข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ทั้งหมดในเซิร์ฟเวอร์ MySQL ของคุณ เมื่อดำเนินการ จะให้ภาพรวมของการเชื่อมต่อต่างๆ แก่เซิร์ฟเวอร์และข้อมูลของการเชื่อมต่อเหล่านั้น เช่น สถานะ เวลา เป็นต้น





ต่อไปนี้เป็นคำสั่งในการดำเนินการ:

แสดงรายการกระบวนการ;

จดบันทึกคอลัมน์ต่างๆ จากเอาต์พุต เรามาคุยกันสั้นๆ กัน:



  1. รหัส – แสดง ID กระบวนการของกระบวนการที่กำลังทำงานอยู่ ในกรณีของกระบวนการที่กำลังทำงานอยู่จำนวนมาก แต่ละกระบวนการจะมี ID ที่ไม่ซ้ำกัน
  2. ผู้ใช้ – มันแสดงถึงผู้ใช้ที่เกี่ยวข้องกับเธรดเฉพาะ
  3. เจ้าภาพ – มันแสดงโฮสต์ที่ไคลเอนต์เฉพาะเชื่อมต่ออยู่ เป็นชื่อโฮสต์ของไคลเอ็นต์เฉพาะที่ออกคำสั่ง
  4. ฐานข้อมูล – หากเลือกฐานข้อมูลสำหรับเธรดเฉพาะ ฐานข้อมูลนั้นจะปรากฏใต้คอลัมน์ DB หากแสดงเป็น NULL แสดงว่าไม่ได้เลือกฐานข้อมูล
  5. สั่งการ – มันแสดงคำสั่งที่กำลังดำเนินการโดยเธรด
  6. เวลา – สำหรับเธรดเฉพาะ คอลัมน์นี้จะบอกว่าเธรดอยู่ในสถานะปัจจุบันนานแค่ไหน
  7. สถานะ – มันแสดงให้เห็นว่าเธรดมีส่วนร่วมในสถานะหรือเหตุการณ์ใด
  8. ข้อมูล – แสดงคำสั่งที่เธรดกำลังดำเนินการอยู่

ในกรณีนี้ เอาต์พุตก่อนหน้าคือผลลัพธ์ที่เราได้รับจากคำสั่ง 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 แล้ว