MySQL中的MyISAM和Inno DB类型有什么不同?

推荐答案

主要区别在于InnoDB支持事务,而MyISAM不支持事务.

还有许多其他的不同之处,但我所知道的共同点是:

  • MyISAM通常被认为搜索速度更快,但最近InnoDB的改进消除了这一差异,并提高了高并发工作负载性能
  • InnoDB支持事务,而MyISAM不支持
  • InnoDB支持引用完整性,而MyISAM不支持
  • InnoDB处理索引的方式稍有不同,将主键存储 for each 索引的一部分(使索引占用磁盘上更多的空间,但也使覆盖索引更有可能)
  • MyISAM执行表级锁定,而InnoDB可以执行行级锁定
  • MySQL配置文件中使用不同的内存/缓冲区/索引设置
  • InnoDB通常被认为具有更好的崩溃恢复能力
  • 正如在另一个答案中提到的,数据在磁盘上的存储方式不同.我相信InnoDB在这方面是可配置的,如果需要,每个表可以有一个文件,等等

我相信谷歌搜索或MySQL站点会更详细地引出许多其他的不同之处.

Database相关问答推荐

如何在维护数据库模型的同时从Firestore中删除文档?

如何从大型Oracle数据库中删除列?

如何调试Anylogic SQL数据库TLS错误?

为什么Hibernate会为@JoinTable的双向@OneToMany关系生成一个复杂的子查询?

如何限制报表中返回的行数?

为什么 INNER JOIN 不等于(!=)永远挂起

MySQL FIND_IN_SET 的对面

这到底是做什么的 Class.forName("com.mysql.jdbc.Driver").newInstance();

在 MySQL 中创建表时如何定义列的默认值?

如果我 for each 用户随机设置 SALT,我如何对他们进行身份验证?

Oracle 数据库统计信息应该多久运行一次?

聊天的数据库模式:私有和群组

我应该为我创建的新创建的 PostgreSQL 模式使用什么正确的文件扩展名?

用 Python 永久存储字典的优雅方式?

SOA 和共享数据库

添加具有初始(但不是默认)值的新列的最佳方法?

Redis-cli - Select 哪个实例?

如果表不存在,如何使用 Derby Db 创建表

如何使用 localdb 在 Code First 中查看数据库图

带数据库的Electron 应用程序