Mysql

InnoDB 和 MyISAM 有什麼區別?

  • April 15, 2015

我正在使用 MySQL 作為我目前 Web 項目的數據庫。我是 MySQL 新手。請向我解釋一下 InnoDB 和 MyISAM 之間的區別。

ISAM = Indexed Sequential Access Method,本質上是一個平面文件(對於那些能記住的 DBA,想想 Btrieve 或 B-Tree)。這是一項非常古老的技術——但不要讓它讓你停止使用它。因為它是一個平面文件(稍後會詳細介紹),它不是關係文件,因此不是 RDBMS,因此在某些情況下更合適。

InnoDB 是您最熟悉的完整 RDBMS。MyISAM 可以通過在頂部添加的另一層來維護您的連結、邏輯和引用完整性,從而看起來是相關的。

如果您有很多記錄(例如,2000 萬條),並且這些記錄大多是獨立的(即您不需要做很多連結來檢索相關數據),那麼 ISAM 非常棒。它非常依賴索引,如果您沒有正確的索引,請為非常長的查詢時間做好準備。恰當的例子:我們有一個包含 20M+ 記錄的 Btrieve ISAM 表,並且基於準確的索引進行檢索和過濾數據幾乎是即時的。使用錯誤的索引實際上是 15 分鐘。

如果您有很多關係連結,InnoDB 非常適合。表 A 引用表 B 中的一個欄位,該欄位引用表 C 和 D。InnoDB 可以使用各種不錯的連接方法(散列連接等)來獲取這些記錄,而 ISAM 數據庫必須為每個單獨執行多個子查詢行並手動匹配記錄。

如果您想要比這更多的細節,您真的必須學習數據庫課程!

引用自:https://serverfault.com/questions/54897