服务端指南 数据存储篇 | MySQL(02) 存储引擎的 InnoDB 与 MyISAM 之争

1,854 阅读1分钟

作为 MySQL 数据库的两种主要的存储引擎,InnoDB 与 MyISAM 各有长处。

原文地址:服务端指南 数据存储篇 | MySQL(02) 存储引擎的 InnoDB 与 MyISAM 之争
博客地址:blog.720ui.com/

在 MySQL 5.1 及之前的版本中,MyISAM 是默认的存储引擎,而在 MySQL 5.5 版本以后,默认使用 InnoDB 存储引擎。

MyISAM 不支持行级锁,换句话说,MyISAM 会对整张表加锁,而不是针对行。同时,MyISAM 不支持事务和外键。MyISAM 可被压缩,存储空间较小,而且 MyISAM 在筛选大量数据时非常快。

InnoDB 是事务型引擎,当事务异常提交时,会被回滚。同时,InnoDB 支持行锁。此外,InnoDB 需要更多存储空间,会在内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB 支持自动奔溃恢复特性。

InnoDB 与 MyISAM 的主要区别

方面 MyISAM InnoDB
事务 不支持 支持
外键 不支持 支持
行级锁 不支持 支持
自动奔溃恢复 不支持 支持

对于如何选择 InnoDB 与 MyISAM 存储引擎,我的建议:一般情况下,应该优先选择 InnoDB 存储引擎,并且尽量不要将 InnoDB 与 MyISAM 混合使用。

(完)

更多精彩文章,尽在「服务端思维」微信公众号!