MySQL สามารถใช้ประโยชน์จาก RAM ขนาด 64 GB ได้อย่างมีประสิทธิภาพหรือไม่


22

เราพบปัญหาในการสืบค้นตารางที่มีประมาณ 50 ล้านแถวและมีขนาดดัชนี 4 GB (ขนาดตารางประมาณ 6 GB) ส่งผลให้เซิร์ฟเวอร์ฐานข้อมูลเปลี่ยนหน่วยความจำและชะลอความเร็วลงอย่างมาก ฉันค่อนข้างแน่ใจว่าสิ่งนี้เกี่ยวข้องกับขนาดของเทมเพลตที่เกินขนาดและมันถูกสลับเป็นดิสก์

ถ้าฉันอัพเกรดเซิร์ฟเวอร์ฐานข้อมูลของฉันจาก 32 GB of RAM เป็น 64 GB RAM ฉันสงสัยว่าฐานข้อมูล MySQL จะสามารถใช้ประโยชน์จากหน่วยความจำเพิ่มเติมนี้ได้อย่างเต็มที่และไม่สลับหรือไม่ ฉันได้ลองใช้ตัวแปรสองสามอย่าง (เช่น KEY_BUFFER_SIZE ฯลฯ ... ) และดูเหมือนว่าพวกเขาสนับสนุนการตั้งค่ามากกว่า 64 GB อย่างไรก็ตามเอกสาร MySQL กล่าวว่า tmp_table_size สูงสุดที่ 4 GB

ดังนั้นการอัพเกรดหน่วยความจำจะคุ้มหรือไม่ ปัญหา "การสืบค้นตารางขนาดใหญ่" จะได้รับประโยชน์จากสิ่งนี้หรือไม่และจะไม่ช่วยเนื่องจากขีด จำกัด 4 GB หรือไม่ ฉันรู้ว่าอาจมีโซลูชันอื่น ๆ เช่นการปรับโครงสร้างตารางเพื่อแบ่งพาร์ติชันด้วยวิธีที่แตกต่างกัน ฯลฯ ... แต่ไม่มีการเปลี่ยนแปลงอะไรเกี่ยวกับตารางหน่วยความจำเพิ่มเติมจะช่วยได้หรือไม่

โดยทั่วไปแล้วมีตัวแปรอื่น ๆ ที่เกี่ยวข้องกับหน่วยความจำที่ MySQL จะไม่สามารถใช้ประโยชน์จากการย้ายจาก 32 ถึง 64 GB RAM?

เราใช้ลินุกซ์ 64 บิต (Ubuntu) เป็นเซิร์ฟเวอร์ฐานข้อมูลของเรา

ขอบคุณเลน

คำตอบ:


5

หากคุณกำลังใช้ InnoDB innodb_buffer_pool_sizeตัวแปรสำคัญที่สุดที่จะเป็นชุด ฉันจะตั้งค่าเป็นประมาณ 80% ของหน่วยความจำระบบของคุณ เมื่อคุณแคชเก็บความร้อนหลังการใช้งานข้อมูลที่ใช้งานมากที่สุดของคุณ (ชุดข้อมูลที่ใช้งานได้) จะอยู่ในหน่วยความจำ (innodb_buffer_pool_size) และการดำเนินการของคุณจะรวดเร็วมาก ด้วยหน่วยความจำ 64GB คุณสามารถใส่เข้าไปได้มาก หน่วยความจำจะซื้อดีสำหรับเซิร์ฟเวอร์ฐานข้อมูล


11

ใช่ - ถ้าคุณใช้ InnoDB และมีปริมาณงานอ่านมากคุณสามารถใช้ประโยชน์จาก RAM จำนวนมากได้อย่างแน่นอน [สมมติว่าชุดข้อมูลของคุณจะพอดีกับ mem - เซิร์ฟเวอร์ของคุณจะสว่างอย่างรวดเร็ว]

ฉันใช้ MySQL กับที่เก็บข้อมูล InnoDB บนเซิร์ฟเวอร์ 8-16 GB พร้อมชุดการทำงานที่เหมาะสมในหน่วยความจำ


เหมือนกันที่นี่ - เราเรียกใช้ InnoDB บนกล่อง 64GB และยอดเยี่ยม
James

9

บางทีมันอาจคุ้มค่าที่จะใช้เวลาและความพยายามในการค้นคว้าสิ่งที่ทำให้ระบบเปลี่ยนก่อนที่จะใช้เงินไปกับความทรงจำ?

หน่วยความจำ 32GB มีหน่วยความจำเหลืออยู่มากมายแม้หลังจากโหลดทั้งตารางดัชนีและ temp_table สูงสุดไปยังหน่วยความจำแล้ว การค้นหาอย่างรวดเร็วทำให้ทั้งสองเอกสารมีความเกี่ยวข้องกัน:


0

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

คุณสามารถโพสต์บน Stackoverflow โพสต์ที่มีสคีมาแบบสอบถามแผนอธิบายและรายละเอียดบางอย่างสำหรับปัญหา

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