MySQL มี table storage engines อยู่ด้วยกันหลากหลาย แต่ที่นิยมใช้งานกันหลักๆ คือ InnoDB และ MyISAM ในบทความนี้ผมจะมาเปรียบเทียบข้อแตกต่างระหว่าง InnoDB และ MyISAM ในส่วนของ feature, ประสิทธิภาพการทำงาน และข้อดีข้อเสียต่างๆของ InnoDB และ MyISAM
เปรียบเทียบ Feature และ ประสิทธิภาพการทำงานระหว่าง InnoDB และ MyISAM
- InnoDB เป็นเทคโนโลยีที่ใหม่กว่า MyISAM
- InnoDB มีการทำงานที่สลับซับซ้อนมากกว่า MyISAM
- InnoDB ให้ความสำคัญกับ data integrity แต่ MyISAM ไม่ให้ความสำคัญ
- InnoDB ทำงานแบบ row-level lock สำหรับการ insert and update แต่ MyISAM ทำงานแบบ table-level lock
- InnoDB เป็น transactions base แต่ MyISAM ไม่ใช่
- InnoDB มี foreign keys แต่ MyISAM ไม่มี
- InnoDB สามารถ recovery ข้อมูลกลับมาได้ดีกว่า MyISAM ในกรณีที่เกิด system crash
- MyISAM รองรับ full-text index แต่ InnoDB ไม่รองรับ
เปรียบเทียบข้อดีและข้อเสียของ MyISAM และ InnoDB
ข้อดี ข้อเสีย InnoDB
ข้อดีของ InnoDB
- InnoDB ให้ความสำคัญกับ data integrity มากเพราะ InnoDB รองรับการทำงานแบบ relationship constraints และ transactions
- มีความเร็วในการ insert และ update ด้วยเนื่องจากทำงานในระดับ row level จึงไม่ทำให้ลดปัญหาเรื่องการรอ insert และ update
ข้อเสียของ InnoDB
- มีความซับซ้อนในการออกแบบ data model มากกว่า MyISAM
- ต้องการทรัพยากรของระบบมากกว่า MyISAM ดังนั้นบางคำแนะนำให้ปิด InnoDB หากไม่มีการใช้งาน
- ไม่รองรับการทำ full-text index
ข้อดี ข้อเสีย MyISAM
ข้อดีของ MyISAM
- ออกแบบ data model ง่าย และไม่ต้องกังวลเรื่องความสัมพันธ์ระหว่าง table
- ถ้าหาก data model ไม่มีความซับซ้อนจะทำงานเร็วกว่า InnoDB มาก
- รองรับการทำ full-text index
- เหมาะกับการอ่านข้อมูล (select) มากกว่าเขียน
ข้อเสียของ MyISAM
- ไม่มีการตรวจสอบ data integrity
- ไม่รองรับ transactions
- ทำงานช้ากว่า InnoDB มากหากระบบเน้นการ insert หรือ update ข้อมูล
Leave a Reply