ประสิทธิภาพเซิร์ฟเวอร์ MySql ที่ช้า - อะไรและวิธีการตรวจสอบ?


10

เริ่มต้น: การปฏิเสธความรับผิด

ฉันไม่ใช่ MySql Server DBA; ฉันรู้ว่าส่วนใหญ่ของ MSSQL - ซึ่งเป็นเหตุผลที่ฉันต้องการความช่วยเหลือของคุณ

สิ้นสุด: ข้อจำกัดความรับผิดชอบ

ฉันถูกขอให้ตรวจสอบว่าเหตุใดเอ็นจิ้นเซิร์ฟเวอร์ MySql จึงทำงานได้ไม่ดี - ฉันไม่ได้เห็นหรือไม่มีฐานข้อมูลที่เกี่ยวข้องและต้องการทราบว่าจะเริ่มต้นอย่างไร

ฉันจะเริ่มที่ไหน

ฉันควรถามคำถามอะไรกับผู้ที่สามารถเข้าถึง MySql ได้ - ฉันไม่รู้ด้วยซ้ำว่าพวกเขากำลังใช้ phpmyadmin หรือเครื่องมืออื่น ๆ

เป็นหลัก:

  • ฉันควรถามรายการอะไรและฉันจะตอบกลับแต่ละรายการที่พวกเขาให้ได้อย่างไร

ไอเท็มสำคัญที่จะถามเมื่อเกิดปัญหาในการทำงานของฐานข้อมูลคืออะไร?

ใน MSSQL ฉันสามารถตรวจสอบsp_who2การเชื่อมต่อที่มีอยู่เพื่อดูว่ามีสิ่งใดที่บล็อกอยู่หรือไม่ * ไม่จำเป็นต้องเจาะจงเนื่องจากอาจมีผลลัพธ์หลายรายการสำหรับแต่ละรายการ แต่ต้องการช่วยให้ลูกบอลกลิ้งเนื่องจากมีผลกระทบต่อผู้ใช้ - เห็นได้ชัดว่าพวกเขาติดตั้งเครื่องยนต์ mysql โดยไม่ต้องมีบอร์ด dba


คุณได้ตรวจสอบปัญหา ressource ตามปกติแล้ว - CPU เต็ม, RAM เต็ม / ไม่ได้ใช้, การโอเวอร์โหลดของ IO? 101 สิ่งที่คุณจะเริ่มต้นด้วยเซิร์ฟเวอร์ sql?
TomTom

ยังไม่ได้มีโอกาส - ฉันแค่ต้องการเตรียมพร้อมเมื่อฉันเข้ามาเพื่อให้ทุกอย่างดำเนินไปอย่างต่อเนื่อง - เป็นไปได้ที่ผู้คนในสถานที่ตรวจสอบแล้วและมีทั้งแอพและเซิร์ฟเวอร์ db ที่มีรายละเอียดสูง (บริษัท splurged) ต้องการเน้นสิ่งที่เกิดขึ้นหากฮาร์ดแวร์ไม่ใช่ปัญหา
Yasker Yasker

หมดเรี่ยวแรง - เริ่มต้นจากตรงนั้น ฉันเคยเห็น "เซิร์ฟเวอร์ระดับไฮเอนด์" ที่มีฮาร์ดดิสก์ SCSI หนึ่งตัว (ซึ่งพวกเขาต้องดึงออกมาจากการประมูลอีเบย์) ที่มีเวลาตอบสนองหลายวินาที ... ฉันจะตรวจสอบด้าน IO นอกจากนี้ยังจะช่วยให้ - IO มากเกินไปสามารถชี้ไปที่ดัชนีที่หายไปหากตัวเลขนั้นไร้สาระโดยสิ้นเชิง
TomTom

คำตอบ:


9
  • บันทึกการสืบค้นที่ช้า - หากระบบของคุณมีการสืบค้นจำนวนมากระบบจะยิ่งเข้มงวดในการค้นหาว่าการสืบค้นใดที่ทำให้ระบบของคุณช้าลง MySQL จัดเตรียมเครื่องมือเพื่อบันทึกการสืบค้นที่ช้าสำหรับการวิเคราะห์เพิ่มเติม http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html

  • อธิบายคำสั่งเพิ่มเติมแสดงรายละเอียดเกี่ยวกับข้อความค้นหาของคุณเมื่อคุณไม่รู้ว่าเกิดอะไรขึ้นhttp://dev.mysql.com/doc/refman/5.0/en/explain-extended.html

  • เพื่อเพิ่มความเร็วการสืบค้นของคุณให้ใช้ดัชนี - แนวปฏิบัติที่ดีคือเพิ่มดัชนีโดยดูว่าเขตข้อมูลใดอยู่ในส่วนคำสั่ง WHERE เพิ่มดัชนีสำหรับพวกเขา นอกจากนี้หากคุณกำลังดึงเขตข้อมูลทั้งหมดจากตารางแบบสอบถามจะช้าลงโดยดึงข้อมูลทั้งหมดจากดิสก์ ในแบบสอบถามแบบใช้เลือกข้อมูลคุณควรระบุเขตข้อมูลที่คุณต้องการนำมาแทนเพื่อให้มีทั้งหมดด้วย *
  • ใช้ประโยชน์จาก Query Cache http://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html
  • ตรวจสอบให้แน่ใจว่าตัวเลือกไฟล์กำหนดค่าเซิร์ฟเวอร์ MySQL ของคุณได้รับการปรับให้เหมาะสมตามฮาร์ดแวร์ของคุณ http://dev.mysql.com/doc/refman/5.5/en/option-files.html
  • ตรวจสอบให้แน่ใจว่าคุณใช้ชนิดข้อมูลที่ปรับให้เหมาะสมแล้วในขณะที่สร้างโครงสร้างตารางตัวอย่างเช่น "ข้อคิดเห็น" มีขนาด 256 ตัวอักษรตอบกลับไปยัง MYSQL ด้วยฟิลด์ที่มีประเภท VARCHAR (256) แทนที่จะใช้ TEXT แบบสอบถามจะเร็วขึ้นมาก

Procedure_Analyse () สามารถช่วยคุณค้นหาประเภทข้อมูลที่เหมาะสมที่สุด:

http://www.mysqlperformanceblog.com/2009/03/23/procedure-analyse/

http://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html

  • มีเครื่องมือโอเพนซอร์สจาก Percona - http://www.percona.com/software/percona-toolkitซึ่งสามารถเป็นประโยชน์สำหรับ MySQL DBA และโดยเฉพาะผู้ที่ยังใหม่กับ MySQL เครื่องมือเหล่านี้จะให้ความช่วยเหลือที่ดีแก่พวกเขา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.