首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编程地设置春季事务的回滚点?

如何编程地设置春季事务的回滚点?
EN

Stack Overflow用户
提问于 2014-04-03 11:52:43
回答 2查看 1.1K关注 0票数 0

如何为Spring中的事务指定回滚点?

假设出现以下情况,我必须对db执行一个非常长的插入,这需要相当长的时间(几分钟)。此insert操作包装在一个事务中,该事务确保如果出现问题,事务将被中止,数据库将恢复到事务开始前的状态。

但是,此解决方案会影响应用程序的性能,因为在执行长事务时,其他事务无法访问db。我通过将大事务拆分到几个执行相同操作的较小事务中来解决这个问题。但是,如果其中一个小事务失败,数据库将回滚到此最后一个事务之前的状态。不幸的是,这将使数据库处于不正确的状态。我希望,如果在这些较小的事务中发生错误,数据库将回滚到第一个小事务之前的状态(即完全相同的状态,如果该操作由单个事务执行,它将回滚)。

您对我如何使用Spring事务来实现这一点有任何建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-03 13:55:11

你应该看看http://docs.spring.io/spring/docs/4.0.3.RELEASE/javadoc-api/org/springframework/transaction/TransactionStatus.html。它具有所需的功能:-创建保存点-发布保存点-回滚到保存点

当然,您的事务管理器(以及底层JDBC驱动程序和DB)应该支持该功能。

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 03:58:15

如果您可以使用相同的主键序列来进行暂放表和生产表,那么您应该对从stg到prod的移动数据进行批处理。当小事务失败时,可以使用暂存表中的键从生产表中删除。这样,您就可以将生产表还原到它的原始状态。

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

https://stackoverflow.com/questions/22836854

复制
相关文章

相似问题

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