ที่น่าสนใจใน MySQL 5.5 คุณสามารถมีพูลบัฟเฟอร์ Innodb หลาย ๆ ตัว
พารามิเตอร์ที่คุณใส่ใจคือ
ในเวลาประมาณหนึ่งเดือนฉันมีกำหนดที่จะใช้พูลบัฟเฟอร์ 112 innodb สำหรับลูกค้า ฉันจะให้คุณรู้ว่ามันไปอย่างไร
อัพเดท 2011-02-27 21:57 EDT
ฉันพบว่าค่าสูงสุดสำหรับ innodb_buffer_pool_instances เป็น 64 ฉันตัดสินใจที่จะกำหนดค่า 144 GB ดังนั้นฉันจึงตั้งค่า innodb_buffer_pool_instances เป็น 18 และ innodb_buffer_pool_size เป็น 8 ฉันกำลังโหลดเซิร์ฟเวอร์ที่มี 450GB
อัพเดท 2011-04-28 13:44 EDT
ฉันลองใช้ InnoDB Buffer Pool หลายตัว มีการล็อกเธรดและการโต้แย้งมากเกินไป ฉันเปลี่ยนเป็นบัฟเฟอร์ 162GB เดียว + การตั้งค่า read_io_threads และ write_io_threads เป็น 64 (ค่าสูงสุด) วิธีนี้ใช้ได้ผลดีกว่า
อัพเดท 2012-07-03 17:27 EDT
ฉันเรียนรู้สิ่งที่น่าอัศจรรย์เกี่ยวกับ MySQL หากคุณจัดสรร InnoDB Buffer แบบ monolithic เดียวที่ใหญ่กว่านั้นTotal ที่ถูกติดตั้งหารด้วยจำนวน CPU ทางกายภาพคุณจะปลุกระดมระบบปฏิบัติการให้แลกเปลี่ยนหน่วยความจำในช่วงเวลาปกติเนื่องจาก InnoDB Buffer Pool เต็ม ตัวเลือกของ MySQL 5.5 ที่รู้จักกันในชื่อinnodb_buffer_pool_instancesสามารถใช้แบ่งพูลบัฟเฟอร์ได้ เมื่อวานนี้ฉันใช้สิ่งนี้อย่างถูกต้องกับลูกค้าที่ฉันพูดถึงในคำตอบของฉันเมื่อปีที่แล้ว ฉันยังมี 162GB สำหรับบัฟเฟอร์พูลของลูกค้า ฉันได้ตั้งค่าตัวเลือก innodb_buffer_pool_instances ของเซิร์ฟเวอร์เป็น 2 เพราะเซิร์ฟเวอร์ DB แต่ละตัวเป็น hexacore คู่ ฉันกำลังคิดที่จะตั้งค่าเป็น 12 แต่จากนั้นเพื่อนร่วมงานแสดงบล็อกให้ฉันจาก Jeremy Cole เกี่ยวกับ MySQL และ Swappiness. หลังจากอ่านเสร็จฉันก็นำไปปฏิบัติใช้ทันทีสำหรับลูกค้า ฉันรันคำสั่งนี้
numactl --hardware
ฉันเห็นการแมปขนาด 192GB ของเซิร์ฟเวอร์ RAM เป็น 96GB กับแต่ละแกนหลัก ดังนั้นฉันจึงตั้งค่า innodb_buffer_pool_instances เป็น 2 ตอนนี้ทุกอย่างดูดี ฉันจะอัปเดตคำตอบของฉันเพื่อดูว่าสิ่งนี้มีผลต่อการเปลี่ยนหน่วยความจำสำหรับ 2 montns ต่อไปอย่างไร