我有一系列的ofMyISAM数据库表,并且读到了一些关于它在完整性方面不如InnoDB好的地方。具体而言,这篇文章继续下去,似乎暗示你有可能丢失数据。当然,我找不到联系(典型的运气是吧?)但我确实记得外卖的意思。
是否有可能在插入过程中丢失实际行?我的假设是,这不是真的,但我会对社会人士的意见感兴趣。
谢谢!
发布于 2017-09-06 04:34:49
MyISAM对事务的支持为零,因此不能确保事务的完整性。它没有可以用来从崩溃中恢复的日志。简而言之,它很脆弱,而且容易发生惊人的故障,特别是当您的系统在大写过程中突然终止时。
很有可能在写过程中丢失数据。InnoDB的不同之处在于,在它完成之前,写本身实际上是不提交的,在修改过程中有一种保持数据库完整性的机制,这样如果有故障,它就可以“回滚”到以前的状态。MyISAM没有这样的机制,它任由文件系统支配,以防止其完全损坏。
我强烈建议不要在任何重要的事情上使用MyISAM,如果可以避免的话,也不要使用任何东西。这在上世纪90年代是很有用的,当时内存很高,CPU能力也很匮乏,一个典型的高端MySQL服务器可能有512 of的内存,两个200 the的处理器,以及一对9GB的RAID1配置磁盘。每一点表现都很重要。InnoDB变得更快了,日志记录的性能损失也大大减少了,特别是在SSD上。
您不会使用没有日志的文件系统,所以您也不应该使用没有日志的数据库。
发布于 2017-09-06 05:45:06
当MySQL在查询过程中崩溃时,可能会发生许多顽皮的事情。
SET x = x + 1的话。如果您重播它,则会再次碰到这些值。LOCK TABLE,否则借记一个帐户,然后贷记另一个,可能会损失(或捏造)资金。如果您只存储短暂的数据(新闻报道、博客、日志、游戏游戏等),那么这些可能都不重要。如果你在存钱,重要的是时间。
MyISAM足够坚实,可以在正常情况下做正确的事情。也就是说,它不会在插入过程中“丢失行”,除非同时发生其他事情--崩溃、磁盘错误等。
如果不能检查错误,MyISAM和InnoDB都可能“丢失行”。数据截断,除以零,死锁,失去连接等,可能会直接或间接导致一些丢失的东西。
更进一步,当有人说他们是在保护他们的数据,有主人和奴隶,但把他们两个放在同一个房间,我问洪水,地震,龙卷风等。
没有什么是100%安全的,但是正确使用的InnoDB比MyISAM安全得多,以防止数据丢失和损坏。
https://stackoverflow.com/questions/46066734
复制相似问题