我在测试innoDB表中的事务支持,出于好奇心,我尝试在MyIsam表上运行相同的事务,令人惊讶的是它工作正常。我假设在myIsam上,表查询是一个接一个地执行的,而不是在一个原子操作中执行的,并且我不会从启动事务、提交和回滚操作中得到任何错误。我感兴趣的是,MyIsam引擎只是忽略了这些操作,还是执行了一些操作?
发布于 2011-11-07 19:48:48
MyISAM有效地工作在自动提交模式下(因为它不是事务引擎),并且它只是忽略提交/回滚。
实际上,存储引擎是MySQL体系结构中不同的一层,独立于SQL解析器,SQL层通过较低层次的API与存储引擎通信,这就是为什么有一个通用的SQL和引擎,支持不同的特性子集。您可以查看架构here的非常高层次的概述
发布于 2011-11-07 19:50:05
MyIsam选项卡不是为此而构建的。即使在5+版本中也不是。它只用于存储数据。它不能保证事务或数据恢复。为此,您应该使用InnoDB,如果需要,还可以使用MyIsam进行复制(使用MyIsam表检索数据会更快,因为没有跨表检查)。
你可以从MySQL http://forums.mysql.com/read.php?21,68686,69229#msg-69229上读到这篇文章
https://stackoverflow.com/questions/8036005
复制相似问题