事务是否会增加数据库的开销?

Dav*_*rks 5 mysql database innodb transactions autocommit

是否会增加在我们的应用程序中围绕每个服务方法放置数据库事务的开销?

我们目前只使用DB事务,这是明确/显而易见的必要条件.我最近建议围绕所有服务方法进行交易,但其他一些开发人员提出了一个谨慎的问题:这会增加开销吗?

我的感觉不是 - 自动提交与DB角度的事务相同.但这是准确的吗?

DB:MySQL

Ale*_*tic 4

你是对的,通过自动提交,每个语句都包含在事务中。如果您的服务方法正在执行多个 sql 语句,那么最好将它们包装到事务中。请查看答案以获取更多详细信息,这里有一篇关于该主题的不错的博客文章。

回答你的问题,是的,事务确实会增加性能开销,但在你的具体情况下,你不会注意到差异,因为你已经启用了自动提交,除非你在服务方法中有长时间运行的语句,这将导致表上的锁更长参与交易。如果您只是将多个语句包装在一个事务中,您将获得一个事务(而不是每个单独语句的事务),如此处所示 “启用了自动提交的会话可以通过使用显式启动来执行多语句事务”)。 START TRANSACTION 或 BEGIN 语句并以 COMMIT 或 ROLLBACK 语句结束”),您将在服务方法级别实现原子性......

最后,如果从在服务方法级别实现原子性(我认为您想要实现)的角度来看这是有意义的,我会采用您的解决方案,但是对性能有+和-影响,具体取决于您的查询、请求等...