Convert MyISAM to InnoDB

หลังจากที่ได้ติดตั้งการใช้งาน InnoDB และลองสร้างตารางแบบ InnoDB ไปบ้างแล้ว คราวนี้มาดูการเปลี่ยนแปลงจาก MyISAM มาเป็น InnoDB เนื่องจากว่าส่วนใหญ่แล้วจะมีการใช้งานตารางแบบ MyISAM มากกว่า เนื่องจากว่าตารางชนิดนี้จะเป็นค่า Default มาให้อยู่แล้ว

ความแตกต่างของ MyISAM และ InnoDB

ISAM (MyISAM) ซึ่งมีความรวดเร็วในการอ่านและเขียนสูง เนื่องจากมีการจัดเก็บไว้ในรูปแบบของแฟ้มข้อมูล ซึ่งรองรับการอ่านข้อมูลพร้อมๆ กันได้ (เหมาะสำหรับ Web Application) แต่อาจจะมีปัญหาเมื่อใช้งานกับระบบที่ต้องมีการอ่าน/เขียน ข้อมูลในตารางเดียวกัน พร้อมๆ กันที่สำคัญ ฐานข้อมูลประเภท MyISAM จะมีปัญหาเรื่อง Index เสีย และ Data Corrupt บ่อยมาก หากใช้งานใน OS ที่เป็น Windows และมีการ Shutdown อย่างไม่ถูกต้อง ซึ่งทำให้ผู้ดูแลระบบต้องมีการซ่อมแซม (repair table bad_table) ตารางทีมีปัญหาอยู่เรื่อยๆ

InnoDB ข้อดีคือ รองรับการทำ Transaction รองรับการอ่านและเขียน พร้อมๆ กันได้ดีกว่าฐานข้อมูลประเภท MyISAM และยังมีระบบ Auto Data Recovery หากมีการ shutdown โดยไม่เหมาะสม (ไฟดับ)ซึ่งในการใช้งานผู้ใช้สามารถเลือกได้ว่าจะให้ตารางใดเป็นประเภท InnoDB หรือ MyISAM ขึ้นอยู่กับความเหมาะสม (ว่าจะเลือกความเร็ว หรือ ประสิทธิภาพ)

ที่มา : http://joezine.exteen.com/20060305/myisam-innodb

ขั้นตอนการเปลี่ยนจา่ก MyISAM มาเป็น  InnoDB

1. ทำการ Export ตารางออกมาเป็นไฟล์ SQL

MyISAMtoInnoDB_2.png

MyISAMtoInnoDB_3.jpg

2. เปิดไฟล์ที่ Export มาบน Editor แล้วทำการ Find and Replace คำว่า “MyISAM”  เป็น “InnoDB”

3. สร้างฐานข้อมูลใหม่ หรือ ลบตารางเดิม (ถ้าสร้างฐานข้อมูลใหม่อย่าลืมเปลี่ยนชื่อฐานข้อมูลในไฟล์ SQL ด้วยน้า)

4. Import ไฟล์ SQL นั้นมาใส่ฐานข้อมูล

อ้างอิง

http://mysqldatabaseadministration.blogspot.com/2006/07/myisam-to-innodb.html

http://tag1consulting.com/MySQL_Engines_MyISAM_vs_InnoDB

Leave a comment