在事务中上载文件时阻止数据库锁定

时间:2016-08-07 11:06:19

标签: c# sql-server asp.net-mvc amazon-s3

我有一个功能,用户可以查看他们上传的所有文件。为此,我在数据库中插入一条记录,然后将文件上传到AWS S3。我正在使用记录中的id作为文件名。例如,如果id为53,则文件名为53.pdf。插入记录和文件上载都在TransactionScope中。我担心这个长时间的操作会锁定数据库。有没有办法防止数据库被锁定?

1 个答案:

答案 0 :(得分:1)

  

我担心在长时间操作期间数据库将被锁定。有没有办法防止数据库被锁定?

您无需担心数据库被阻止,唯一需要对数据库进行独占锁定的事务是 更改数据库语句 ,这些需要排他锁并且可能阻止整个数据库。

您无需担心阻止数据库的对象级事务

下面是示例锁屏幕截图,当我并行运行两个insert语句时。当你看到Insert时,SQLServer正在获取(IX锁定)对象上的状态"我将专门锁定一些东西表格下面的图层......"

因此,在这种情况下,如果您要运行另一个需要从同一个表中选择id并将其插入同一个表的事务,则将阻止select(在正常SQLServer上运行默认隔离级别)。但不是插入...

enter image description here

但是SQLAzure默认运行在RCSI上,简单来说就是“ 读取会话不会被阻止 ' ..

我不确定,如果AWS中的SQLServer也是如此?你可以通过运行以下查询来检查这一点(检查隔离级别desc列)

select * from sys.databases
相关问题