java – 数据源的自动提交应该设置为false吗?
请参阅Spring DataSourceTransactionManager.java中的注释,函数doBegin:
在我正在进行的项目中,未配置自动提交.所以默认情况下是这样.我们使用Spring来管理事务,所有SQL都在@Transactional注释函数中执行.因此,事务是手动提交的.每次事务开始时,db连接都将autocommit设置为false,并在事务退出后将autocommit设置回true.典型的工作流程是(在JDBC级别): > conn = dataSource.getConnection(); 设置autocommit来回昂贵吗?我们应该为性能原因配置数据源连接池autocommit = false吗?跳过第2步和第6步. 最佳答案 1)autocommit完全依赖于数据库,这意味着,通过连接的每个语句都将在一个隐含执行的单独事务中执行.除非和直到,您希望使用个人编码并避免由多个语句持有的这些锁可能导致与其他用户冲突,因此无需将自动提交设置为false. 2)从绩效的角度来看, a)如果你有很多用户,并且由于持有数据库锁而发生了一些冲突, b)可能存在需要回滚的情况. c)您希望根据特定条件手动提交事务. 编辑:我看到你编辑了这个问题,简单回答你,autocommit = false会强迫你编写自己的提交/回滚/等,性能完全取决于数据库,实时锁定的数量! 编号将autocommit设置为false并再次为true将不会增加系统的收费. 不,不要配置数据源连接池autocommit = false,除非您出于某些特定原因并且是经验丰富的人员.从性能的角度来看,正如我已经十分认证的那样,它依赖于数据库的类型和实时用户访问实例的数据库,对于您的项目,99.99%的百分比您不需要将其设置为false. 将autocommit设置为true只会确保在每个语句之后调用commit. 我还看到你从数据源获得连接,在这种情况下,最好保留连接的默认设置,以便下次从池中获取连接时,工作流程不会有任何问题 希望这有帮助!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |