Nul*_*sis 0 mysql database myisam
我有一系列 MyISAM 数据库表,并且正在阅读一些关于它在完整性方面不如 InnoDB 的观点。不过,具体来说,该帖子继续说道,似乎表明您有可能丢失数据。我当然找不到链接(典型的运气是吗?)但我确实记得上面建议的外卖。
插入期间是否有可能丢失实际行?我的假设是这不是真的,但我会对社区的言论感兴趣。
谢谢!
MyISAM 对事务的支持为零,因此它无法确保事务完整性。它没有可用于从崩溃中恢复的日志。简而言之,它很脆弱,并且容易出现严重故障,尤其是当您的系统在大写入过程中突然终止时。
在写入过程中丢失数据的可能性非常高。InnoDB 的不同之处在于,写入本身在完成之前实际上并未提交,有一种机制可以在修改期间保留数据库完整性,以便如果出现故障,它可以“回滚”到之前的状态。MyISAM 没有这样的机制,并且受文件系统的支配,以防止其完全损坏。
我强烈建议不要将 MyISAM 用于任何关键的事情,或者如果可以避免的话,根本不要使用 MyISAM。它在 20 世纪 90 年代很有用,当时内存非常宝贵,CPU 能力也很稀缺,典型的高端MySQL 服务器可能有 512MB 内存、两个 200MHz 处理器和一对采用 RAID1 配置的 9GB 磁盘。每一点点的表现都很重要。InnoDB 的速度变得更快,日志的性能损失也显着缩小,尤其是在 SSD 上。
您不会使用没有日志的文件系统,因此您也不应该使用没有日志的数据库。