การใช้หน่วยความจำสูงสุดของ MySQL นั้นขึ้นอยู่กับฮาร์ดแวร์การตั้งค่าและฐานข้อมูลของคุณเอง
ฮาร์ดแวร์
ฮาร์ดแวร์เป็นส่วนที่ชัดเจน แรมมากขึ้น merrier ดิสก์เร็วขึ้นFTW อย่าเชื่อจดหมายข่าวรายเดือนหรือรายสัปดาห์เหล่านั้น MySQL ไม่ปรับขนาดเชิงเส้น - แม้กระทั่งบนฮาร์ดแวร์ของ Oracle มันยากกว่านั้นเล็กน้อย
บรรทัดล่างคือ: ไม่มีกฎทั่วไปสำหรับสิ่งที่แนะนำสำหรับการตั้งค่า MySQL ของคุณ ทั้งหมดขึ้นอยู่กับการใช้งานปัจจุบันหรือการคาดการณ์
การตั้งค่าและฐานข้อมูล
MySQL มีตัวแปรและสวิตช์จำนวนนับไม่ถ้วนเพื่อปรับพฤติกรรมให้เหมาะสม หากคุณประสบปัญหาคุณจำเป็นต้องนั่งอ่านคู่มือ (f'ing)
สำหรับฐานข้อมูล - ข้อ จำกัด ที่สำคัญบางประการ:
- เครื่องยนต์ตาราง (
InnoDB
, MyISAM
, ... )
- ขนาด
- ดัชนี
- การใช้
เคล็ดลับ MySQL ส่วนใหญ่เกี่ยวกับ stackoverflow จะบอกคุณเกี่ยวกับ 5-8 ที่เรียกว่าการตั้งค่าที่สำคัญ ก่อนอื่นไม่ใช่ทั้งหมดที่สำคัญเช่นการจัดสรรทรัพยากรจำนวนมากให้กับ InnoDB และการไม่ใช้ InnoDB นั้นไม่สมเหตุสมผลเพราะทรัพยากรเหล่านั้นสูญเปล่า
หรือ - ผู้คนจำนวนมากแนะนำให้เพิ่มmax_connection
ตัวแปร - พวกเขารู้เพียงเล็กน้อยว่า MySQL จะจัดสรรทรัพยากรเพิ่มเติมเพื่อรองรับสิ่งเหล่านั้นmax_connections
หากจำเป็น วิธีแก้ปัญหาที่ชัดเจนยิ่งขึ้นอาจเป็นการปิดการเชื่อมต่อฐานข้อมูลใน DBAL ของคุณหรือเพื่อลดจำนวนwait_timeout
เธรดเหล่านั้นให้เป็นอิสระ
ถ้าคุณจับฉันได้ - มีเรื่องมากมายให้อ่านและเรียนรู้มากมาย
เครื่องยนต์
เอ็นจิ้นตารางเป็นการตัดสินใจที่สำคัญมากหลายคนลืมไปก่อนแล้วจู่ๆก็พบว่าตัวเองกำลังต่อสู้กับMyISAM
โต๊ะขนาด 30 GB ซึ่งล็อกและบล็อกแอปพลิเคชันทั้งหมด
ฉันไม่ได้ตั้งใจจะบอกว่าMyISAM แย่แต่InnoDB
สามารถปรับแต่งให้ตอบสนองได้เกือบหรือเกือบจะเร็วที่สุดMyISAM
และเสนอสิ่งต่างๆเช่นการล็อกแถวในUPDATE
ขณะที่MyISAM
ล็อกทั้งตารางเมื่อเขียนถึง
หากคุณมีอิสระในการเรียกใช้ MySQL บนโครงสร้างพื้นฐานของคุณเองคุณอาจต้องการตรวจสอบเซิร์ฟเวอร์ perconaเนื่องจากมีการสนับสนุนจำนวนมากจาก บริษัท ต่างๆเช่น Facebook และ Google (พวกเขารู้เร็ว) มันยังรวมถึงการลดลงของ Percona ด้วย แทนที่InnoDB
เรียกว่าXtraDB
.
ดูส่วนสำคัญของฉันสำหรับการตั้งค่า percona-server (และ -client) (บน Ubuntu): http://gist.github.com/637669
ขนาด
ขนาดฐานข้อมูลมีความสำคัญมาก - เชื่อหรือไม่ว่าคนส่วนใหญ่ใน Intarwebs ไม่เคยจัดการกับการตั้งค่า MySQL ที่มีขนาดใหญ่และเขียนอย่างเข้มข้น แต่สิ่งเหล่านี้มีอยู่จริง บางคนจะหมุนตัวและพูดว่า "ใช้ PostgreSQL !!! 111" แต่ตอนนี้เราไม่สนใจ
บรรทัดล่างคือตัดสินจากขนาดการตัดสินใจเกี่ยวกับฮาร์ดแวร์จะต้องทำ คุณไม่สามารถทำให้ฐานข้อมูล 80 GB ทำงานได้เร็วบน RAM 1 GB
ดัชนี
ไม่ใช่: ยิ่งมากยิ่งมีความสุข EXPLAIN
เฉพาะดัชนีที่จำเป็นจะต้องมีการตั้งค่าและการใช้งานจะต้องมีการตรวจสอบกับ เพิ่มเติมว่า MySQL EXPLAIN
มีจำนวน จำกัด แต่เป็นการเริ่มต้น
การกำหนดค่าที่แนะนำ
เกี่ยวกับสิ่งเหล่านี้my-large.cnf
และmy-medium.cnf
ไฟล์ - ฉันไม่รู้ด้วยซ้ำว่าเขียนขึ้นเพื่อใคร ม้วนของคุณเอง
การปรับสีรองพื้น
เริ่มต้นที่ดีเป็นไพรเมอร์จูน มันเป็นสคริปต์ทุบตี (คำใบ้: คุณจะต้องใช้ลินุกซ์) ซึ่งใช้ผลลัพธ์ของSHOW VARIABLES
และSHOW STATUS
รวมเป็นคำแนะนำที่เป็นประโยชน์ หากเซิร์ฟเวอร์ของคุณทำงานมาระยะหนึ่งคำแนะนำจะดีกว่าเนื่องจากจะมีข้อมูลที่จะอ้างอิง
ไพรเมอร์การปรับแต่งไม่ใช่ซอสวิเศษ คุณควรอ่านตัวแปรทั้งหมดที่แนะนำให้เปลี่ยนแปลง
การอ่าน
ผมชอบที่จะแนะนำmysqlperformanceblog เป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับเคล็ดลับเกี่ยวกับ MySQL ทุกประเภท และไม่ใช่แค่ MySQL เท่านั้นพวกเขายังรู้มากมายเกี่ยวกับฮาร์ดแวร์ที่เหมาะสมหรือแนะนำการตั้งค่าสำหรับ AWS เป็นต้นคนเหล่านี้มีประสบการณ์หลายปี
แหล่งข้อมูลที่ยอดเยี่ยมอีกอย่างคือplanet-mysqlแน่นอน