จะเพิ่มการใช้หน่วยความจำใน MySQL Server เพื่อปรับปรุงความเร็วได้อย่างไร


28

ฉันมีเซิร์ฟเวอร์ Windows 2008 ที่มี RAM 8GB ใช้ IIS7 และ MySQL ฉันติดตามหน่วยความจำ cpu และการใช้ดิสก์บนเซิร์ฟเวอร์และพบว่า MySQL ใช้ RAM เพียง 250MB ทำให้ดิสก์ยุ่งมากแม้ว่าฉันจะมี ram ฟรีวางอยู่รอบตัว

ใน SQL Server ฉันสามารถกำหนดจำนวนหน่วยความจำที่ฉันต้องการใช้อย่างง่ายดายฉันกำลังมองหาการตั้งค่าเดียวกันใน MySQL

ฉันจะกำหนดค่า MySQL ให้ใช้หน่วยความจำเพิ่มเติมและลดการใช้ cpu และดิสก์ได้อย่างไร

คำตอบ:


20

table_cacheเป็นคำสั่งกำหนดค่าที่มีประโยชน์ที่สุดสำหรับการเปลี่ยนแปลง แต่ละครั้งที่ MySQL เข้าถึงตารางมันจะโหลดตารางลงในแคช หากคุณมีตารางจำนวนมากจะทำให้แคชเร็วขึ้น

ดูตัวแปรเซิร์ฟเวอร์ของคุณโดยเรียกใช้:

show status;

open_tablesและมีลักษณะสำหรับตัวแปร หากนี่เป็นค่าเดียวกับคุณtable_cacheและopened_tablesเพิ่มขึ้นเรื่อย ๆ คุณจะต้องเพิ่มtable_cacheค่าในไฟล์กำหนดค่าของคุณ คุณจะพบความสมดุลโดยทดลองกับตัวแปรเหล่านี้ในช่วงเวลาเร่งด่วน คุณต้องการกำหนดค่าเพื่อให้ในช่วงเวลาเร่งด่วนสูงสุดมีจำนวนน้อยมากopened_tablesแม้หลังจากเซิร์ฟเวอร์ใช้งานได้นาน

key_buffer_sizeยังเป็นตัวแปรที่ดีสำหรับการทดสอบด้วย ตัวแปรนี้มีผลต่อขนาดบัฟเฟอร์ดัชนีและทำให้ตัวแปรนี้ใหญ่ขึ้นเพิ่มความเร็วในการจัดการดัชนีของ MySQL คุณสามารถดูตัวแปรที่มีshow variables;คำสั่งอีกครั้งและเปรียบเทียบการkey_read_requests อุดมคติที่คุณต้องการอัตราส่วนระหว่างทั้งสองตัวแปรที่จะเป็นต่ำที่สุดและคุณสามารถทำเช่นนี้โดยการเพิ่มขนาดของkey_reads key_buffer_sizeหากคุณตั้งค่าตัวแปรนี้ให้สูงขึ้นคุณจะมีการเขียนและอ่านน้อยลงไปยังดิสก์โดยตรงซึ่งเป็นปัญหาหลักของคุณ


11
อันที่จริงคำสั่งshow status; เพื่อดูตัวแปรสถานะเช่นและ Open_tables ดูเหมือนจะถูกลบในรุ่น MySQL ล่าสุด Opened_tablestable_cache
Matt Fenwick

5

คุณต้องเปลี่ยนค่าในmy.cnfไฟล์และเริ่ม MySQL ใหม่แม้ว่าคุณจะสามารถเปลี่ยนค่าได้จำนวนมากขณะที่ MySQL กำลังทำงานอยู่เช่นกัน ('SET GLOBAL VARIABLE = value ')

คุณอาจจะต้องการที่จะมองไปที่การเพิ่มkey_buffer_size, sort_buffer, read_bufferและtable_cacheสำหรับการเริ่มและอาจinnodb_buffer_pool_sizeถ้าคุณมีตาราง InnoDB ใด ๆ ค่าเหล่านี้บางส่วนคุณสามารถเพิ่มความยาวได้ (แม้กระทั่งขนาดของสองคำสั่งซื้อ) โดยเฉพาะอย่างยิ่งเมื่อให้ฮาร์ดแวร์ของคุณ ค่าเริ่มต้นของ MySQL นั้นค่อนข้างอนุรักษ์นิยมและดูเหมือนว่าจะมุ่งเป้าไปที่เดสก์ท็อปที่ใช้งานทั่วไปเมื่อประมาณสิบปีที่แล้ว โอ้และถูกเตือนว่ารุ่น 32 บิตจะมีปัญหาในการใช้ RAM มากกว่า 2GB

ดูในคู่มือ MySQLสำหรับข้อมูลและคำแนะนำเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.