SQL Azure事务死锁或长时间运行

时间:2013-08-19 09:02:44

标签: sql azure dataset deadlock transactionscope

我正在使用一个DataSet来保存SQL Azure数据库中的不同表。我使用transactionScope将数据插入到相关表中(每个表大约1-3行)。 在我的数据库中,每个插入操作对每个用户都是唯一的,因此永远不会重复。

在测试场景中,我测试并行插入数据并随后删除此数据。使用TransactionScope进行删除操作,我得到了死锁。如果不使用TransactionScope进行删除,则删除语句有时最多需要40秒。 所以似乎Azure在插入期间锁定整个表,删除必须等待...

有没有办法避免操作需要这么长时间?可能只使用行锁定或更改transactionScope选项?

我的交易:

var transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
transactionOptions.Timeout = TransactionManager.MaximumTimeout;
using(TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, transactionOptions))
{
    InsertIntoTable1;
    InsertIntoTable2;
    InsertIntoTable3;
    scope.Complete();
}
DeleteTable3Entity;
DeleteTable2Entity;
DeleteTable1Entity;

0 个答案:

没有答案