在事务中是否存在运行sql查询的副作用?

时间:2012-02-20 18:30:44

标签: sql sql-server

在事务中是否存在运行sql select查询的副作用?

我正在执行一个服务方法,该方法在一个事务块中查询和插入/更新数据。

查询包含在事务中。我应该期待这种消极行为吗?

3 个答案:

答案 0 :(得分:0)

消极或正确的行为不是绝对的概念。

您应该根据应用需求设计隔离和交易。更多的隔离也会使事务意味着更多的锁。

答案 1 :(得分:0)

我不会说有任何负面行为,但我知道SQL Server默认情况下会锁定行。因此,如果您有更新/插入表的查询,则查询可能需要一段时间才能锁定和/或超时。您可以找到此here的示例。

关于select语句,如果将其用作成功插入/更新的条件,则该语句不一定是坏的。如果出现问题,事务的目的是能够回滚任何问题。因此,如果查询未实现此目标,我会将其从事务中删除。 Here's一篇很酷的文章,您可能希望透过该文章来帮助您了解如何有效地使用交易。

答案 2 :(得分:0)

您将在交易开启时锁定。如果您从.NET执行此操作并且不小心,则会将锁定保留在表中。此外,如果您在具有标识列的表上回滚事务并在第一个事务仍处于打开状态时插入,则最终会得到不连续的标识。

然而,在交易中运行事物的好处可以解决这些问题。

您应该尝试尽可能减少交易。