首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL事务隐式提交

问MySQL事务隐式提交
EN

Stack Overflow用户
提问于 2014-07-08 04:33:33
回答 2查看 887关注 0票数 0

我从MySQL的策略开始,我有一个疑问:

文件中说:

启动事务会导致提交任何挂起的事务。有关更多信息,请参见第13.3.3节“导致隐式提交的语句”。

我在同一个web应用程序上有大约5个用户(这是一个用于测试的本地应用程序),他们都共享相同的MySQL用户来与数据库进行交互。

我的问题是:如果我在代码中使用事务,其中两个事务启动一个事务(因为插入、更新或其他原因),会不会是事务相互干扰?

我在导致隐式提交的语句中看到,它包括启动事务。作为一个本地应用程序,很难快速判断那里是否有问题,每个查询结果都与预期的一样,但我仍然有疑问。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 06:23:44

隐式提交发生在会话中。

例如,启动一个事务,进行一些更新,然后忘记关闭事务并启动一个新事务。然后,第一个事务将隐含地提交。

但是,到数据库的其他连接不会受此影响;它们有自己的事务。

您说有5个用户使用相同的db用户。这没什么。但是,为了让它们执行单独的操作,它们不应该使用相同的连接/会话。

票数 1
EN

Stack Overflow用户

发布于 2014-07-08 04:42:21

默认情况下,对于MySQl,每个连接都打开了autocommit。也就是说,每个连接将立即提交每个查询。因此,对于一个InnoDb表,每个事务都是原子的--它完全完成,不受干扰。

对于需要多个操作的更新,可以使用START TRANSACTION查询来使用事务。任何未完成的事务都将提交,但这不会是一个问题,因为大多数情况下,它们都将被提交。

在接收到COMMIT查询之前执行的所有更新都保证完全不受干扰地完成,或者,如果是ROLLBACK,则不应用任何更新。

其他连接的其他传输会在此过程中看到数据库的一致视图。

此属性符合酸性(原子性、一致性、隔离性、持久性),您应该可以使用InnoDB表。

其他表类型可能实现不同级别的酸依从性。如果你需要使用它,你应该仔细检查它。

这是一个非常简化的事务处理方法。在MySQL网站这里上有更多的详细信息,您可以阅读有关ACID遵从性这里的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24623786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档