Mysql中myisam和innodb的區別,至少5點

kakaxi9521發表於2017-03-29

(1)5點不同

1. 儲存結構

  MyISAM:每個MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。 .frm檔案儲存表定義。資料檔案的副檔名為.MYD(MYD)。索引檔案的副檔名是.MYI(MYIndex)

  InnoDB:所在的表都儲存在同一個資料檔案中(也可能是多個檔案,或者是獨立的表空間),InnoDB表的大小隻受限於作業系統檔案的大小,一般為2GB

2. 儲存空間

     MyISAM:可被壓縮,儲存空間較小。支援三種不同的儲存格式:靜態表(預設,但是注意資料末尾不能有空格,會被去掉)、動態表、壓縮表。

     InnoDB:需要更多的記憶體和儲存,它會在主記憶體中建立其專用的緩衝池用於高速緩衝資料和索引。

3. 事物支援

MyISAM:強調的是效能,每次查詢具有原子性,其執行速度比Innodb型別更快,但是不提供事物支援。

InnoDB:提供事務支援,外部鍵等高階資料庫功能。具有事務(commit)、回滾(rollback)和崩潰修復能力(crach recovery capabilities)的事務安全(transaction-safe ACID compliant)型表。

4. CURD操作

MyISAM: 如果執行大量的select, MyISAM是更好的選擇。(因為沒有支援行級鎖),在增刪的時候需要鎖定整個表格,效率會低一些。相關的是innoDB支援行級鎖,刪除插入的時候只需要鎖定該行就行,效率較高。

InnoDB:如果你的資料執行大量的insertupdate,出於效能方面的考慮,應該使用InnoDB表。Delete從效能上Innodb更優,但delete from table時,InnoDB不會重新建立表,而是一行一行的刪除,在innodb上如果要清空儲存有大量資料的表,最好使用truncate table這個命令。

5. 外來鍵

MyISAM: 不支援。

InoDB:支援。
(2)各種不同mysql版本的2者的改進
(3)2者的索引的實現方式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2136284/,如需轉載,請註明出處,否則將追究法律責任。

相關文章