SQL Azure 连接和事务

SQL Azure Connection and Transaction

我将 SQL Azure 用于基于 Saas 的 asp.net 应用程序。我已尽可能避免事务以防止最终用户出现死锁。这是由于我缺乏数据库设计方面的知识,但我认为避免事务至少是减少 table 和行锁的一种可靠方法,因此可以减少用于 SaaS 的数据库中的争用和死锁问题。

所以我没有在 .net 中使用任何形式的显式数据库事务。现在假设我在 .net 中打开了一个 SQLConnection 和一个在 Table1 中插入信息的 运行 插入语句,然后在不关闭连接的情况下我还在 Table2 和 Table3 中插入​​。所有这些插入都将成为隐式事务的一部分吗?

不,多语句事务是显式打开的。我相信有一些深奥的设置可以用来隐式打开一个,但我认为这些是严重的设计错误和邪恶。

我不明白你为什么想要这种行为。相反,显式地打开一个事务。交易的打开方式不会导致行为差异。

but I thought avoiding transaction is atleast one sure way of reducing table and row locks and therefore contention and deadlocks issues in a database being used for SaaS.

这在启发式上是正确的。我宁愿建议您熟悉锁定等基础知识。通过正确使用事务,您可以获得大量的开发效率。基本的事务使用其实很简单。打开快照隔离。您想要这个的可能性约为 99%。