MySQL 5.5 ออกแล้ว เปลี่ยนมาใช้ InnoDB แทน MyISAM

ที่มา: http://www.blognone.com/news/20607
MySQL 5.5 ออกแล้ว การเปลี่ยนแปลงที่สำคัญที่สุดคือย้ายมาใช้ InnoDB เป็น default storage engine แทน MyISAM เสียที หลังจากเตรียมการเรื่องนี้มานานหลายรุ่น

ผลก็คือ MySQL 5.5 จะได้ฟีเจอร์หลายๆ อย่างจาก InnoDB โดยเฉพาะเรื่องประสิทธิภาพ และความสามารถในการขยายตัว (scalability) เพิ่มเข้ามา ส่วนของใหม่อย่างอื่นก็คือปรับปรุงเรื่อง replication และคำสั่งใหม่อย่าง SIGNAL/RESIGNAL รายละเอียดอ่านกันเองใน What's New in MySQL 5.5

เว็บไซต์ Help Net Security ระบุว่าในการทดสอบบนวินโดวส์ MySQL 5.5 มีประสิทธิภาพดีกว่า 5.1 เรื่อง read/write เฉพาะกรณีที่สูงสุดคือ 1,500% ส่วนบนลินุกซ์สูงสุด 360%

ทำความรู้จักกับ INNODB Engine
ที่มา
Modoeye Articles โดย Sheroku�เขียนเมื่อ 2009.08.09
InnoDB Database Engine เป็น Database Engine หนึ่งของ MySQL ที่เป็นที่นิยมเช่นเดียวกับ MyISAM เหตุผลหนึ่งที่ส่วนใหญ่นักเขียนโปรแกรมใช้ MyISAM คือความเร็วของการ Query แต่ InnoDB นั้นแม้ความเร็วจะสู้ไม่ได้แต่ก็ยังเป็นที่นิยมเพราะอะไร เรามาเปรียบเทียบ Engine ทั้ง 2 แบบกันว่าต่างกันอย่างไร


MyISAMInnoDBMEMORYNDB
Multi-statement transactions, ROLLBACK - X - X
Foreign key constraints - X - -
Locking level table row table row
BTREE indexes X X - X
FULLTEXT indexes X - - -
HASH lookups - X X X
Other in-memory tree-based index - - 4.1.0 -
GIS, RTREE indexes 4.1.0 - - -
Unicode 4.1.0 4.1.2 - -
Merge (union views) X - - -
Compress read-only storage X - - -
Relative disk use low high - low
Relative memory use low high low high


อ้างอิงจาก http://dev.mysql.com/tech-resources/articles/storage-engine/part_3.html

จะเห็นว่า InnoDB มีข้อดีเหนือ MyISAM คือ การรองรับ Transaction, Foreign Key, มี Hash Lookup, และการ Lock ได้ถึงระดับ Row

�แต่ก็มีข้อเสียคือขาดการทำดัชนีแบบ FULLTEXT, GIS และ RTREE, ไม่มีการ Union Views, ไม่มีการบีบอัด และใช้ทรัพยากรมากกว่า

แต่เหตุใด InnoDB ยังคงเป็นที่นิยม?

  1. การทำ Transaction ซึ่งไม่มีใน Engine อื่นๆ นอกจาก InnoDB และ NDB เท่านั้น
  2. ทำสามารถ Lock ได้ระดับ Row ทำเขียนและอ่านได้ในเวลาเดียวกัน
  3. มีการทำ Hashing ดัชนี

นอกจากความสามารถสำคัญเรื่องการทำ Transaction ได้แล้วนั้น สิ่งสำคัญที่มีการเลือกใช้ InnoDB คือ การ Lock ระดับ Row แม้ว่า จะมีการใช้ทรัพยากรที่มากกว่า แต่ด้วยการที่สามารถ Lock ระดับ Row ทำให้สามารถเขียน (Insert/Update/Delete) ในเวลาเดียวกับการอ่าน (Select) ได้ ทำให้เกิดความเร็วไม่ต้องรอการเขียนเสร็จก่อนเช่นใน MyISAM

ส่วนสำคัญอีกอย่างคือ InnoDB ได้แยกการทำดัชนี (index) ออกจากตารางข้อมูลและทำ Hashing ดัชนีไว้ด้วยเทคนิคนี้ทำให้การค้นหาเข้าถึงได้รวดเร็ว

จากการทดสอบความเร็วนั้นการ Query ข้อมูลจากตารางน้อยๆ 2-3 ตาราง MyISAM สามารถทำความเร็วได้ดีกว่า แต่เมื่อมีการทำงานกับหลายตาราง >3 ตารางขึ้นไป โดยเฉพาะเมื่อมีข้อมูลหลายล้าน record ขึ้นไปนั้น InnoDB สามารถทำความเร็วได้ดีกว่า เพราะเทคนิคการทำ Hashing ดัชนีแยกไว้นั่นเอง

MyISAM นั้นเนื่องจากไม่มีการ Lock ระดับ Row จึงไม่เหมาะกับงานที่มีการเขียนข้อมูลพร้อมกับการเรียกใช้บ่อยๆ ถ้ามีการเขียนและการอ่านพร้อมๆ กันควรเลือกใช้ InnoDB ดีกว่า ต่อไปเมื่อมีความจำเป็นต้องใช้งาน MySQL ควรเลือก Database Engine ให้เหมาะสมครับ

รูปภาพที่เกี่ยวข้อง

ติชม


ต้องการให้คะแนนบทความนี้่ ?

สร้างโดย :


wnitat

สถานะ : ผู้ใช้ทั่วไป
เทคโนโลยีคอมพิวเตอร์