c# - SQL 事务 - SQL Server 还是 C#?

标签 c# sql-server transactions

从性能的角度来看,存储过程中的 sql 事务比代码中的 sql 事务要好得多,我这样说对吗?

目前我在存储过程中使用我的大部分交易,但有时我使用代码来处理更复杂的例程 - 显然我尽可能地保持最少。

只是有一个复杂的例程需要太多的“变量”,用c#写sql事务远比用SQL Server容易。这是代码可读性和性能之间的细微差别。

有什么想法吗?

最佳答案

性能各不相同; SqlTransaction 可以比 TransactionScope 具有更少的开销,尤其是当 TransactionScope 决定它需要与 DTC 纠缠在一起时。但我不认为 SqlTransactionBEGIN TRAN 之间有巨大的区别,除了额外的往返。然而,TransactionScope 仍然很快,并且是在一个事务中封装多个操作的最方便的选择,因为环境事务不需要每次都手动与命令关联。

也许更好(也更重要)的因素是 isolation-level . TransactionScope 默认为最高(可序列化)。较低的隔离级别允许更多更少的阻塞(但存在不可重复读取等风险)。 IIRC TSQL 事务默认为较低级别之一。但是可以针对所有 3 个选项调整隔离级别。

关于c# - SQL 事务 - SQL Server 还是 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376641/

相关文章:

sql - INSERT INTO WITH 公用表表达式 - SQL Server

php - 如何处理动态网站本地化?

C# 如何以编程方式获取SQL Server安装路径?

SQL Server 存储过程在进行微小更改后需要很长时间才能运行

c# - 为什么我们不能在另一个类方法之外使用类方法?

mysql - 关键字 'CONSTRAINT' 附近的语法不正确

sql - 是否可以回滚主要 SQL 数据库中的 CREATE TABLE 和 ALTER TABLE 语句?

c# - 根事务回滚时嵌套事务会回滚吗?

c# - 为 .NET MVC 中的 ObjectContext 设计回退的最佳方法是什么

C# - IF 语句中的变量错误