Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สำคัญ การปรับแต่งและการตั้งค่าประสิทธิภาพของ MySQL หลังการติดตั้ง


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

ข้อกำหนดเบื้องต้น

สมมติว่าเราได้ติดตั้ง MySQL แล้ว ฉันกำลังให้คำแนะนำก่อนที่เราจะเริ่มทราบเกี่ยวกับการตั้งค่าการปรับแต่งประสิทธิภาพสำหรับ MySQL

แม้แต่เจ้าหน้าที่ไอทีที่มีประสบการณ์ก็อาจทำผิดพลาดซึ่งจะนำไปสู่ปัญหามากมาย ดังนั้นก่อนที่เราจะนำคำแนะนำที่ปรากฏในบทความนี้ไปใช้ เราจะคำนึงถึงรายการด้านล่างเพื่อหลีกเลี่ยงปัญหาหรือปัญหา

  • เราจะใช้การตั้งค่าครั้งละหนึ่งรายการเท่านั้น เพื่อให้เราสามารถประมาณการเปลี่ยนแปลงในลักษณะที่เป็นประโยชน์ได้

  • การเปลี่ยนแปลงเกือบทั้งหมดสามารถเปลี่ยนแปลงได้ที่ระดับรันไทม์ด้วย “SET GLOBAL” ซึ่งง่ายที่สุด และทำให้เราสามารถยกเลิกการเปลี่ยนแปลงที่เรานำไปใช้และสร้างปัญหาใดๆ สุดท้าย เราสามารถใช้การเปลี่ยนแปลงถาวรโดยการตั้งค่าในไฟล์กำหนดค่า

  • หากการเปลี่ยนแปลงการกำหนดค่าไม่ถูกนำไปใช้แม้หลังจากเริ่มบริการใหม่ (MySQL) อาจเป็นเพราะไฟล์การกำหนดค่าไม่ถูกต้อง หรือการตั้งค่าใช้กับส่วนที่ถูกต้องหรือไม่

  • MySQL จะไม่อนุญาตให้มีการตั้งค่าที่ซ้ำกัน หากเราต้องการติดตามการเปลี่ยนแปลง ขอแนะนำให้ใช้การควบคุมเวอร์ชัน

การตั้งค่า MySQL ปรับประสิทธิภาพบางส่วน

ต่อไปนี้คือการตั้งค่าการปรับแต่งประสิทธิภาพบางส่วนในส่วน [mysqld] ซึ่งเราสามารถเรียนรู้เกี่ยวกับการตั้งค่าการปรับแต่งประสิทธิภาพบางอย่างได้ ขอแนะนำให้เปลี่ยนการตั้งค่าเหล่านี้เสมอเมื่อทำการติดตั้งเท่านั้น

innodb_buffer_pool_size − นี่เป็นการตั้งค่าที่สำคัญมากในการดูแลทันทีหลังการติดตั้งโดยใช้ InnoDB InnoDB เป็นบัฟเฟอร์พูลที่ข้อมูลถูกสร้างดัชนีในแคช ซึ่งมีขนาดที่เป็นไปได้ที่ใหญ่มาก ซึ่งจะทำให้แน่ใจและใช้หน่วยความจำไม่มีพื้นที่ดิสก์สำหรับการดำเนินการอ่าน-เขียนส่วนใหญ่ โดยทั่วไปแล้วขนาดของค่า InnoDB คือ 5 -6GB สำหรับ RAM 8GB

innodb_log_file_size − การตั้งค่านี้ใช้สำหรับบันทึกซ้ำ บันทึกการทำซ้ำทำให้แน่ใจว่าการอ่านและเขียนนั้นรวดเร็วและทนทานแม้ในขณะที่กู้คืนข้อขัดข้อง ในเวอร์ชันก่อนหน้าของ MySQL 5.1 นั้นยากมากที่จะปรับเปลี่ยนเนื่องจากเราต้องการบันทึกการทำซ้ำขนาดใหญ่มากเพื่อประสิทธิภาพที่ดีขึ้นและมีขนาดเล็ก บันทึกการทำซ้ำเป็นเวอร์ชันสำหรับการกู้คืนข้อขัดข้องที่รวดเร็วของ MySQL หลังจาก MySQL เวอร์ชัน 5.5 ประสิทธิภาพการกู้คืนข้อขัดข้องจะดีขึ้น ขีดจำกัดขนาดบันทึกการทำซ้ำของ MySQL ถูกจำกัดที่ 4GB ใน MySQL 5.5 ขณะนี้ขนาดของขนาดบันทึกการทำซ้ำถูกลบใน MySQL 5.6

max_connections − เพื่อหลีกเลี่ยงข้อผิดพลาด "การเชื่อมต่อมากเกินไป" เราต้องเพิ่ม max_connections การเชื่อมต่อเริ่มต้นคือ 151 ข้อเสียเปรียบหลักของค่าสูงสำหรับ max_connections ทำให้เซิร์ฟเวอร์ไม่ตอบสนองถ้าไม่มีการเชื่อมต่อมากขึ้นและการทำธุรกรรมที่ใช้งานอยู่

Innodb_log_buffer_size − การตั้งค่านี้เป็นขนาดของบัฟเฟอร์สำหรับธุรกรรมที่ยังไม่ได้คอมมิต ค่าเริ่มต้นคือ 1MB เนื่องจากเรามีธุรกรรมขนาดใหญ่กับฟิลด์ข้อความ/บล็อบ ขนาดบัฟเฟอร์จะเต็มเร็วกว่ามากและทริกเกอร์โหลดอินพุตและเอาต์พุตเพิ่มเติม เราสามารถเพิ่ม innodb_log_buffer_size ได้

Innodb_flush_method − การตั้งค่านี้สำหรับควบคุมวิธีการล้างบันทึกและข้อมูลไปยังดิสก์ ค่าที่ดีที่สุดคือ O_DIRECT เมื่อเรามีฮาร์ดแวร์ตัวควบคุม RAID พร้อมแคชการเขียนและการซิงค์ข้อมูลสำหรับสถานการณ์ส่วนใหญ่ Sysbench เป็นเครื่องมือที่ดีที่จะช่วยให้คุณเลือกค่าต่างๆ ได้

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

log_bin − การตั้งค่านี้มีประโยชน์มากหากเราต้องการทำให้เซิร์ฟเวอร์เป็นเซิร์ฟเวอร์หลักการจำลองแบบ นอกจากนี้ยังเป็นประโยชน์อย่างมากสำหรับเซิร์ฟเวอร์เครื่องเดียวเมื่อเราต้องการทำ (การกู้คืนแบบ point-in-time-recovery) คืนค่าข้อมูลสำรองล่าสุดและใช้บันทึกไบนารี เมื่อบันทึก log_bin ถูกเปิดใช้งานจะถูกเก็บไว้ตลอดไป และเราจำเป็นต้องล้างบันทึกที่เก่ากว่าเพื่อประหยัดพื้นที่ดิสก์บนเซิร์ฟเวอร์ เราสามารถทำได้โดยการตั้งค่า PURGE BINARY LOGS หรือโดยการตั้งค่า expire_logs_days โดยระบุว่าหลังจากกี่วัน log_bin บันทึกจะถูกลบโดยอัตโนมัติ

skip_name_resolve − การตั้งค่านี้ถูกใช้อย่างเต็มที่เมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ MySQL เซิร์ฟเวอร์จะทำการแก้ไขชื่อโฮสต์ และเมื่อ DNS ช้า การเชื่อมต่อก็จะช้ามากเช่นกัน ดังนั้นจึงแนะนำให้เริ่มเซิร์ฟเวอร์ด้วย skip_name_resolve เพื่อปิดใช้งานการค้นหา DNS ดังนั้นเมื่อเราใช้คำสั่ง GRANT เราต้องใช้ที่อยู่ IP แทนที่จะเป็นชื่อโฮสต์ ดังนั้น โปรดใช้ความระมัดระวังเมื่อเราเพิ่มการตั้งค่านี้ในการกำหนดค่าแอปพลิเคชันที่มีอยู่

ในบทความข้างต้น เราได้เรียนรู้วิธีปรับแต่ง MySQL เพื่อให้มีประสิทธิภาพดีขึ้น และเพิ่มความเร็วระดับการอ่านและเขียนของ MySQL โดยการเปลี่ยน log_bins, skip_name_resolve, query_cache_size, innodb_log_buffer_size, max_connections, innodb_log_file_size, innodb_buffer_pool_size