MyISAM和InnoDB的對比

2021-09-24 20:07:56 字數 1076 閱讀 8707

mysql 資料庫中,最常用的兩種引擎是 innodb 和 myisam。innodb 是 mysql 的默

認儲存引擎。

事務處理上方面

myisam 強調的是效能,查詢的速度比 innodb 型別更快,但是不提供事務支援。

innodb 提供事務支援事務。

外來鍵myisam 不支援外來鍵,innodb 支援外來鍵。

鎖myisam 只支援表級鎖,innodb 支援行級鎖和表級鎖,預設是行級鎖,行鎖大幅度提高了多使用者併發操作的效能。innodb 比較適合於插入和更新操作比較多的情況,而 myisam 則適合用於頻繁查詢的情況。另外,innodb 表的行鎖也不是絕對的,如果在執行乙個 sql 語句時,mysql 不能確定要掃瞄的範圍,innodb 表同樣會鎖全表,例如 update table set num=1 where name like 「%aaa%」。

全文索引

myisam 支援全文索引, innodb 不支援全文索引。innodb 從 mysql5.6 版本開始提供對全文索引的支援。

表主鍵myisam:允許沒有主鍵的表存在。

innodb:如果沒有設定主鍵,就會自動生成乙個 6 位元組的主鍵(使用者不可見)。

表的具體行數

myisam:select count() from table,myisam 只要簡單的讀出儲存好的行數。因為

myisam 內建了乙個計數器,count()時它直接從計數器中讀。

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

一張表,裡面有 id 自增主鍵,當 insert 了 17 條記錄之後,刪除了第 15,16,17 條記錄,再把 mysql 重啟,再 insert 一條記錄,這條記錄的 id 是 18 還是 15 ?

如果表的型別是 myisam, 那麼是 18。因為 myisam 表會把自增主鍵的最大 id 記錄到資料檔案裡, 重啟mysql 自增主鍵的最大 id 也不會丟失。

如果表的型別是 innodb, 那麼是 15。innodb 表只是把自增主鍵的最大 id 記錄到記憶體中, 所以重啟資料庫會導致最大 id 丟失。

mysql中innodb和myisam對比

innodb和myisam是很多人在使用mysql時最常用的兩個表型別,這兩個表型別各有優劣,5.7之後就不一樣了 1 事務和外來鍵 innodb具有事務,支援4個事務隔離級別,回滾,崩潰修復能力和多版本併發的事務安全,包括acid。如果應用中需要執行大量的insert或update操作,則應該使用...

InnoDB和MyIsAM的區別

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

MyISAM和InnoDB的區別

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