MyISAM 和 InnoDB 的區別

2021-08-21 14:29:50 字數 579 閱讀 8600

對比項

myisam

innodb

主外來鍵不支援

支援事務

不支援支援

鎖表鎖,操作一條記錄也會鎖住整個表,不適合高併發

行鎖,操作只鎖一行,不影響其他行,適合高併發

快取只快取索引,不快取資料

快取索引和資料,對記憶體要求高

表空間小

大關注點

效能事務

關鍵是前兩條。innodb把每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成乙個事務。

innodb不儲存表的具體行數,執行select count(*) from table時需要全表掃瞄。而myisam用乙個變數儲存了整個表的行數,執行上述語句時只需要讀出該變數即可,速度很快。

如果表中絕大多數都只是讀查詢,可以考慮myisam;如果寫操作多或者讀寫都挺頻繁,請使用innodb。如果資料庫平台要達到高穩定性,方便的擴充套件性和高可用性來說的話,myisam絕對是首選。系統奔潰後,myisam恢復起來更困難。mysql5.5版本開始innodb已經成為mysql的預設引擎。

MySQL中MyISAM與InnoDB區別

mysql中myisam與innodb區別 myisam innodb 事物處理 不支援支援 外來鍵不支援 支援行鎖 不支援支援 全文索引 支援不支援 表的具體行數 儲存表的具體行數 掃瞄表來計算行數 delete表時 先drop表,然後重建表 一行一行的刪除 索引和資料 分開的,並且索引是有壓縮的...

MySQL中MyISAM與InnoDB區別及選擇

innodb 支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄...

MySQL中MyISAM與InnoDB區別及選擇

支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄位的索引 很難...