MyIsam引擎事务支持

时间:2011-11-07 11:44:20

标签: mysql myisam

我正在测试innoDB表中的事务支持,并且只是因为我尝试在MyIsam表上运行相同的事务,但令人惊讶的是它有效。我假设myIsam表上的查询是一个接一个地执行而不是在一个原子操作中,我没有从START TRANSACTION和COMMIT和ROLLBACK操作中得到任何错误。我感兴趣的是,MyIsam引擎只是忽略了这个操作还是执行了某些操作?

2 个答案:

答案 0 :(得分:29)

MyISAM在自动提交模式下有效工作(因为它不是事务引擎),它只是忽略了提交/回滚。

实际上,存储引擎是MySQL体系结构中的一个不同层,与SQL解析器分开,SQL层使用较低级别的API与存储引擎进行通信,这就是有一个共同的SQL和引擎的原因,支持不同的子集特色。您可以看到架构here

的高级概述

答案 1 :(得分:2)

MyIsam tabels并非为此而建。甚至不是5+版本。它只是为了存储数据。它不保证您进行交易或数据恢复。您应该使用InnoDB,如果需要,可以使用MyIsam进行复制(使用MyIsam表检索数据的速度更快,因为没有跨表检查)。

您可以从MySQL阅读这篇文章 http://forums.mysql.com/read.php?21,68686,69229#msg-69229