【問題】Mysql 中的 MyIsam 與 InnoDB 之差異


Recommended Posts

1.深藍論壇每天這麼多人次的SQL指令....馬克是用哪一種TYPE的MYSQL資料庫

留給你要問的大大幫你解決 XD

2.Mysql 中的 MyIsam 與 InnoDB 之差異

基本上看你要的是哪一種功能

MyIsam : 效能好 不會佔用太多無意義的空間

InnoDB : 如果你比較重視安全的話 建議你選 InnoDB (重視安全性能

鏈接文章
分享到其他網站

我不知道你是從哪裡聽來這樣的比較.

MySQL的官方網站上, 有關於幾種Storage Backend的評論: http://dev.mysql.com/tech-resources/articles/storage-engine/part_3.html

維基百科上也有一些簡單的比較: http://en.wikipedia.org/wiki/InnoDB

這邊也有一些關於這兩種Storage Backend的Benchmark: http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

-----------------------------------------------------------------

MyISAM 和 InnoDB 的一個主要的差別, 就是MyISAM使用Table Locking, InnoDB則是Row Locking, 所以, 如果使用者需要同時大量的Insert+Delete的話, InnoDB絕對是佔上風.

另外, MyISAM支援全文搜索("FULLTEXT indexes"), 需要這功能的就只能選MyISAM. InnoDB支援Transaction+Rollback, 並有Journalling系統, 在當機時, 只要做Journal Replay即可恢復資料.

鏈接文章
分享到其他網站
  • 1 year later...

我簡單解釋好了

MyISAM是比較普通常用的SE(Storage Engine, 接下來簡稱SE), 與其他SE一樣都忽略了FK的限制, 屬於non-transactional safe的SE.

至於InnoDB, 則實做了FK的限制, 包含on update, on delete等restriction. 因此, 建立/設計資料庫的時候, InnoDB是屬於最嚴謹的SE, 任何違反資料庫原則的設計都會導致錯誤. 因此, InnoDB是唯一被列入Transactional Safe的SE.

此外, 像是我們平常備份資料庫, 若沒有採用InnoDB, 大可直接備份MySQL資料夾底下的data, c/p就可以帶去另外一台MySQL, 但是InnoDB的SE, 就必須透過phpMyAdmin以類似dump的方式(mysqldump)來輸出資料庫的table and data.

InnoDB這種SE最常的需求在銀行交易系統, 金流系統以及需要不能出錯的資料表(Table)中. 通常都會搭配begin trans, commit, rollback等指令來完成整體的保護.

詳細資料可以參閱wikipedia.

以上若有不足之處還請補充.

鏈接文章
分享到其他網站
  • 4 weeks later...

請登入後來留意見

在登入之後,您才能留意見



立即登入