程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 關於MySQL的Myisam和Innodb的一些比較總結

關於MySQL的Myisam和Innodb的一些比較總結

編輯:MySQL綜合教程

關於MySQL的Myisam和Innodb的一些比較總結   總結一下MySQL的Myisam和Innodb引擎的一些差別,權當復習了。   首先二者在文件構成上:   Myisam會存儲三個文件:.frm 存儲表結構,.MYD存儲表的數據,.MYI文件存儲表的索引;所以完整的拷貝一張表這三個文件都需要。另外Myisam會對索引進行壓縮。用Myisam備份會更簡單。 Innodb也有 .frm表結構文件,但是數據存儲就不同了,由於有表空間的概念,所以數據文件可能是獨立的,也可能是空閒的,獨立的話數據和索引都會在一個.ibd文件內。 對事務的支持: Myisam不支持;所以如果你真的需要諸如事務,外鍵等特性,放棄它吧。 Innodb支持 事物,回滾等一些事務安全的ACID特性,支持外鍵。 鎖: Myisam只支持表鎖,意即如果你執行了一條DML(數據操縱語言,即增刪改查)語句,整張表會獲得一把鎖,在操作執行完之前其他人不能夠再操作這張表了,所以如果表的並發高,Myisam性能會差一些 Myisam支持行鎖,即可以只給某一行上鎖而非整個表,所以在並發情況下,Update之類的操作性能會更好。當然如果一條SQL語句不能確定掃描范圍時,也會鎖表,諸如where like'%'的操作。更簡單來說,Innodb使用where檢索的列沒有索引,那麼就會鎖表了。 DML(Insert, Select, Update, Delete): Select:一般認為Myisam的讀性能會比Innodb更好,所以如果是個讀多寫少的項目,這點上Myisam可以有加分。 Insert:這個要分情況來說,單線程操作,Myisam明顯會快,但是並發多的話就不一定了。還有需要說明的是Myisam支持Insert Delayed操作,如果你的應用可以接受這種使用方式(可能延遲一下才生效),那麼它會更好一些 Update:一般認為Innodb更快 Delete:Innodb,它會一行行的刪除表,而不是重新建立表 其他: count(*)  :Myisam會保存表的具體行數,而innodb不會,所以你在用phpmyadmin來查看時,表的行數會顯示'~'大約多少行。所以select count(*) 用Myisam當然快,不過這是不加where條件的情況下 Myisam還支持全文索引,比如說搜索諸如某些text字段時 where * like "%*"時性能和效率會更好 Auto_Increment:Innodb必須包含只有該字段的索引,而Myisam可以使用聯合索引。 Myisam建立的表可以使用Myisam_merge引擎,在某些情況下很有用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved