คุณควรแปลงข้อมูลทั้งหมดเป็น InnoDB เพื่อป้องกันปัญหาการล็อคตาราง อย่างไรก็ตามนี่เป็นสิ่งที่ควรพิจารณา:
การจัดทำดัชนี FULLTEXT
ในปัจจุบันมีเพียง MyISAM เท่านั้นที่รองรับการจัดทำดัชนี FULLTEXT FULLTEXT การจัดทำดัชนีสำหรับ InnoDB ขณะนี้อยู่ในผลงานสำหรับ MySQL 5.6 แต่ไม่ได้ผลิตพร้อม หากคุณมีตาราง Drupal ใด ๆ ที่มีดัชนี FULLTEXT ตารางเหล่านั้นจะไม่สามารถแปลงเป็น InnoDB ได้ในขณะนี้
อัปเดตเกี่ยวกับการจัดทำดัชนี FULLTEXT
ขณะนี้ MySQL 5.6 เป็น GA (ใช้เพื่อการผลิต) โปรดลองทำดัชนี FULLTEXT ใน InnoDB
ในการค้นหาตารางเหล่านั้นที่มีFULLTEXT
ดัชนีให้เรียกใช้คิวรีนี้:
SELECT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';
หากไม่มีแถวกลับมาให้แปลงตาราง InnoDB ทั้งหมดเป็นเนื้อหาในใจของคุณ ผมเขียนโพสต์ก่อนหน้านี้เกี่ยวกับวิธีการแปลงตาราง MyISAM ทั้งหมดเพื่อ InnoDB ใช้ MySQL
การจำลองแบบ MySQL
หากคุณมีสภาพแวดล้อมแบบอ่านอย่างหนักการอ่านสามารถไปได้เร็วขึ้นใน MyISAM ถ้าคุณทำสิ่งต่อไปนี้:
- ตั้งค่าการจำลองแบบโท / Slave
- สร้าง Slaves การอ่านอย่างน้อยหนึ่งอันใต้ Master
- เพิ่ม
--skip-innodb
/etc/my.cnf ใน Slaves ทั้งหมด (แปลงตารางเป็น MyISAM เมื่อโหลดข้อมูลลงใน Slave)
- เปลี่ยนรูปแบบแถวของตาราง MyISAM ทั้งหมดในทุก Slave เป็น FIXED โดยคำสั่งนี้:
ALTER TABLE tblname ROW_FORMAT=FIXED;
- ฉันโพสต์บางอย่างเกี่ยวกับเรื่องนี้ใน DBA StackExchange
- หนังสือออกแบบฐานข้อมูล MySQL และปรับแต่งแนะนำให้ใช้
ROW_FORMAT=FIXED
ในหน้า 72,73 สิ่งนี้จะแปลงเขตข้อมูล VARCHAR ทั้งหมดเป็น CHAR มันจะทำให้ตาราง MyISAM ใหญ่ขึ้น แต่ทำการเลือก SELECT กับมันจะเร็วขึ้นมาก ฉันสามารถยืนยันถึงสิ่งนี้เป็นการส่วนตัว ฉันเคยมีตารางที่ 1.9GB ALTER TABLE tblname ROW_FORMAT=FIXED
ผมเปลี่ยนรูปแบบด้วย ตารางสิ้นสุดลง 3.7GB ความเร็วของ SELECT ต่อมันเร็วขึ้น 20-25% โดยไม่ต้องปรับปรุงหรือเปลี่ยนแปลงอะไรเลย
อาการปวดหัวเพียงอย่างเดียวคือการทำให้แอปพลิเคชันของคุณทราบว่าอ่านทาสแยกกัน
บทส่งท้าย
หากคุณกำลังมองหาประโยชน์อื่น ๆ ที่เอ็นจิ้นการจัดเก็บแต่ละตัวมีให้ตรวจสอบ DBA StackExchange: