innodb於myisam區別及應用場景

2021-08-21 05:57:22 字數 994 閱讀 7652

1. 區別:

(1)事務處理:

myisam是非事務安全型的,而innodb是事務安全型的(支援事務處理等高階處理);

(2)鎖機制不同:

myisam是表級鎖,而innodb是行級鎖;

(3)select ,update ,insert ,delete 操作:

myisam:如果執行大量的select,myisam是更好的選擇

innodb:如果你的資料執行大量的insert或update,出於效能方面的考慮,應該使用innodb表

(4)查詢表的行數不同:

myisam:select count(*) from table,myisam只要簡單的讀出儲存好的行數,注意的是,當count(*)語句包含  

where條件時,兩種表的操作是一樣的

innodb : innodb 中不儲存表的具體行數,也就是說,執行select count(*) from table時,innodb要掃瞄一遍整個表來計算有多少行

(5)外來鍵支援:

mysiam表不支援外來鍵,而innodb支援

2. 為什麼myisam會比innodb 的查詢速度快。

innodb在做select的時候,要維護的東西比myisam引擎多很多;

1)資料塊,innodb要快取,myisam只快取索引塊,  這中間還有換進換出的減少; 

2)innodb定址要對映到塊,再到行,myisam 記錄的直接是檔案的offset,定位比innodb要快

3)innodb還需要維護mvcc一致;雖然你的場景沒有,但他還是需要去檢查和維護

mvcc ( multi-version concurrency control )多版本併發控制 

3. 應用場景

myisam適合:(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務。

innodb適合:(1)可靠性要求比較高,或者要求事務;(2)表更新和查詢都相當的頻繁,並且行鎖定的機會比較大的情況。

**:

兩種引擎 INNODB 於 MYISAM的區別?

1 區別 a 事物處理 myisam是非事務安全型的,innodb 是事務安全型 的 支援事務處理等高階處理 b 鎖機制不同 myisam是表級鎖 innodb是行級鎖 c select update,delete,insert的操作 myisam 如果執行大量的select,myisam是最好的選...

InnoDB和MyIsAM的區別

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

MyISAM和InnoDB的區別

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