专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 MySQL存储引擎的区别

MySQL存储引擎的区别

更新时间:2022-03-21 10:22:45 来源:赢咖4 浏览1556次

MySQL存储引擎InnoDB 和 MyISAM 之间的比较

MySQL存储引擎的区别

1.InnoDB 通过重放其日志从崩溃或其他意外关闭中恢复。MyISAM 必须完全扫描和修复或重建任何已更新但未完全刷新到磁盘的索引或可能的表。由于 InnoDB 方法的时间大致是固定的,而 MyISAM 时间随着数据文件的大小而增长,因此 InnoDB 随着数据库大小的增长提供了更高的可用性。

2.InnoDB,将 innodb_flush_log_at_trx_commit 设置为 1,在每个事务之后刷新事务日志,大大提高了可靠性。[1] MyISAM 必须在完全日志文件系统之上运行,例如以 data=journal 挂载的ext4,以提供相同的抵御数据文件损坏的弹性。(日志可以放在SSD设备上以提高 MyISAM 性能,类似地,InnoDB 日志可以放在非日志文件系统上,例如在 SSD 上运行的ext2以实现类似的性能提升。在任何一种情况下都不会牺牲可靠性。 )

3.InnoDB 可以在可靠性较低但在某些情况下性能较高的模式下运行。将 innodb_flush_log_at_trx_commit 设置为 0 会切换到在将控制权返回给调用者之前不将事务提交到磁盘的模式。相反,磁盘刷新发生在计时器上。

4.InnoDB 自动将多个并发插入组合在一起,并同时将它们刷新到磁盘。MyISAM 依靠文件系统块缓存来缓存对数据行和索引的读取,而 InnoDB 在引擎本身内部执行此操作,将行缓存与索引缓存结合起来。

5.如果存在,InnoDB 将按主键顺序存储行,否则按唯一键顺序存储。如果选择的密钥对常见操作有好处,这可以显着加快。[需要引用]如果没有主键或唯一键,InnoDB 将使用内部生成的唯一整数键,并将按大致插入顺序物理存储记录,就像 MyISAM 所做的那样。或者,可以使用自动递增的主键字段来实现相同的效果。

6.InnoDB 为数据和索引提供可更新的LZW压缩页面存储。MyISAM 压缩表无法更新。

7.在完全符合ACID的模式下运行时,InnoDB 必须对每个事务至少执行一次磁盘刷新,尽管它会结合来自多个连接的插入的刷新。对于典型的硬盘驱动器或阵列,这将施加每秒约 200 个更新事务的限制。对于需要更高事务率的应用程序,将需要具有写入缓存和电池备份的磁盘控制器以保持事务完整性。InnoDB 还提供了几种降低这种影响的模式,自然会导致事务完整性保证的损失,但仍保持比 MyISAM 更高的可靠性。MyISAM 没有这些开销,只是因为它不支持事务。

8.MyISAM 对任何现有行的更新和删除使用表级锁定,并可选择追加新行而不是锁定并将它们插入空闲空间。InnoDB 使用行级锁定。对于经常更新许多行的大型数据库应用程序,行级锁定至关重要,因为单个表级锁定会显着降低数据库中的并发性。

9.InnoDB 和 MyISAM 都支持全文搜索,InnoDB 在 MySQL 5.6.4 中获得了全文索引支持,但结果可能有很大不同。

以上就是两种MySQL存储引擎的区别,大家如果想了解更多相关知识,不妨来关注一下赢咖4的MySQL教程,里面的课程内容细致全面,即使没有基础也能够看懂,希望对大家的学习能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>