回答
很多人问 - 我需要交易吗?我为什么需要它们?何时使用它们?
答案很简单:一直使用它们,除非你有一个很好的理由不要(例如,不要在企业之间使用原子事务处理“长时间运行的活动”)。默认值应该始终为yes。你有疑问? - 使用交易。
为什么交易有利?它们可以帮助您处理崩溃,失败,数据一致性,错误处理,它们可以帮助您编写更简单的代码等等。这些好处将随着时间的推移而不断增长。
答案是一些更多的信息,它依赖。您并不总是需要交易安全。有时它是过度的。有时候不是。
例如,我可以看到,例如,当您执行结帐过程时,只希望在收集完所有数据后最终确定它。等待付款f'up,您可以回滚 - 这是您的一个示例需要交易。或者,当使用它们是明智的时候。
当您创建新的用户帐户时,您是否需要交易?也许,如果它跨越10个表格(无论出于何种原因),如果它只是一个表格,那么可能不是。
这也取决于你卖给你的客户,他们是谁,如果他们要求,等等。但如果决定取决于你,那么我会说,明智地选择。
我的底线是,避免过早优化。构建您的应用程序,请记住,您可能需要返回并在需要时进行重构/优化。看看一些开源项目,看看他们如何实现他们的应用程序的不同部分,从中学习。你会发现他们中的大多数根本不使用交易,但是有大量的在线商店使用它们。
当然,这取决于。
它取决于特定存储过程所执行的工作,也许与您所建议的“读/写比率”不同。一般来说,如果查询可能受到其他同时运行的查询的影响,则应考虑在事务中封闭一个工作单元。如果这听起来不确定,那就是。通常很难预测某种工作单位在什么情况下有资格成为候选人。
一个很好的开始就是检查在工作单元内执行的确切的CRUD,在这种情况下在你的存储过程中,并决定它是否会受到其他一些同时操作的影响,以及b)如果其他工作对于这项工作的最终结果(或反之亦然)至关重要。如果这两个答案都是“是”,那么考虑在交易中包装工作单元。
这是什么建议是,你不能总是简单地决定是使用或不使用交易 S,而当它是有道理的,你应该应用它们。使用由ACID(原子性,一致性,隔离性和耐久性)定义的属性来帮助确定何时可能出现这种情况。
要考虑的另一件事是,在某些情况下,特别是如果系统必须快速连续执行许多操作(例如大容量事务处理应用程序),则可能需要衡量事务的相对性能成本。根据工作单元的大小,事务的提交(或回滚)可能是资源昂贵的,可能会不必要地对系统的性能产生负面影响,或者至少受益不大。
不幸的是,这不是一个简单的问题来准确地回答:“这取决于”。
在SQL Server中记住,默认情况下,所有单个语句CRUD操作都处于隐式事务中。如果您需要使多个语句充当原子单位,您只需打开显式事务(BEGIN TRAN)即可。
使用它们,如果:
- 还有,你可能想测试和渔获物不会陷入除非你走出去,做的工作(看东西,测试值一些错误,等等),通常来自一个交易中,这样你就可以回滚整个操作。
- 有任何类型的多步骤操作,如果它们失败,应该在逻辑上作为一个组回滚。
- 1. 我需要一个存储过程吗
- 2. 我需要帮助在SQL Server 2005中编写存储过程
- 3. 我真的需要使用全局程序集缓存(GAC)吗?
- 4. 使用django-mssql调用存储过程
- 5. 我真的需要服务层吗?
- 6. VS2008和SQL Server 2005存储过程中的事务
- 7. 调用MSSQL存储过程中的Java
- 8. 我真的需要数据库事务吗?
- 9. 我真的需要bindParam吗?
- 10. 我真的需要MVVM吗?
- 11. 使用Linq-To-Sql执行存储过程后需要SubmitChanges吗?
- 12. 我需要用bcrypt存储盐吗?
- 13. 我真的需要foreach循环吗?! (foreach可能过度使用)
- 14. 我需要将参数清理到SQL存储过程吗?
- 15. 存储过程事务
- 16. 如何在Java中创建类存储库,我真的需要它吗?
- 17. 我需要使用long类型来存储Java中的2166136261吗?
- 18. 我需要在服务器中通过PHP存储XML
- 19. 数据存储中真的需要索引吗?
- 20. 我们真的需要在Java RMI中创建存根吗?
- 21. 抑制存储过程中的事务
- 22. 存储过程中的MySQL事务
- 23. Mysql的事务存储过程中
- 24. 为什么我们需要使用存储过程?
- 25. SQL Server 2005事务级别和存储过程
- 26. 我们真的需要在WP应用程序中使用ShellTile的ID_CAP_NETWORKING吗?
- 27. 从SqlAlchemy调用MSSQL存储过程
- 28. 需要帮助使我的存储过程更高效
- 29. SQL Server 2005存储过程
- 30. LINQ to sql在ms sql 2005中制作存储过程吗?
“一直使用它们,除非你有一个非常好的理由不要”这就像告诉人们随时都戴头盔,除非他们有充分的理由不这样做。 – 2008-09-13 09:10:04