MyISAM和InnoDB的儲存引擎區別

2021-09-01 13:32:19 字數 914 閱讀 9707

//資料表的型別及儲存位置 

表引擎(engine)或者表型別 

a) myisam(管理方便)

bbs_user1.frm   表結構 

bbs_user1.myi   表索引

bbs_user1.myd   表資料 

b) innodb 

test.frm   表結構

ibdatal    儲存所有資料庫當中所有innodb表的索引和資料(共享表空間)

c) myisam和innodb的區別 

1 myisam 資料表型別(引擎)更加成熟 穩定 易於管理

2 myisam 便會產生碎片空間 要經常使用 optimize table 來進行優化 而innodb不會 

3 myisam 不支援事物處理 而innodb支援 

4 myisam 不支援外來鍵 innodb支援 

5 myisam 會產生三個檔案 .frm(表結構) .myi(表索引) .myd(表資料)

6 innodb 只會產生一檔案 .frm(表結構) 資料和索引全部存在共享表空間當中(iddatal)

7 myisam(推薦使用) 效率高於 innodb  

a 如果應用程式一定要使用事務 毫無疑問選擇innodb引擎 要注意 innodb的行級鎖是有條件的 在where條件沒有使用主鍵時 照樣會鎖全表 比如delete from mytable這樣的刪除語句 

b 如果應用程式對查詢效能要求較高 要使用myisam了 myisam索引和資料是分開的 而且其索引是壓縮的 可以更好地利用記憶體 所以它的查詢效能明顯優於innodb 壓縮後的索引也能節約一些磁碟空間 myisam擁有全文索引的功能 這可以極大地優化like查詢的效率 

c 有人說myisam只能用於小型應用 其實這只是一種偏見 如果資料量比較大 這是需要通過公升級架構來解決 比如分表分庫 而不是單

InnoDB和MyIsAM的區別

myisam型別不支援事務處理等高階處理,而innodb型別支援 這是網上對myisam和innodb的解釋,很抽象吧,我們用白話的方式解釋一下 其實也比較簡單 所謂事務處理,就是原子性操作。打個比方,支援事務處理的innodb表,建設乙個中,發帖是給積分的。你發了乙個帖子執行乙個insert語句,...

MyISAM和InnoDB的區別

mysql預設採用的是myisam。myisam不支援事務,而innodb支援。innodb的autocommit預設是開啟的,即每條sql語句會預設被封裝成乙個事務,自動提交,這樣會影響速度,所以最好是把多條sql語句顯示放在begin和commit之間,組成乙個事務去提交。innodb支援資料行...

Myisam和InnoDB的區別

mysql預設採用的是myisam。myisam不支援事務,而innodb支援。innodb的autocommit預設是開啟的,即每條sql語句會預設被封裝成乙個事務,自動提交,這樣會影響速度,所以最好是把多條sql語句顯示放在begin和commit之間,組成乙個事務去提交。innodb支援資料行...