我们使用SQL Server 2005数据库。一些数据仓库表是TRUNCATEd并且每天都重新加载。当用户针对同一个表运行SELECT语句时,我们会遇到死锁问题。
方案
有没有人对SQL Server机制有详细的解释?还有,有工作吗?
答案 0 :(得分:0)
您可以使用事务隔离级别。
Set transactin isolation level read uncommitted
<query>|
答案 1 :(得分:0)
如果没有更多信息,很难提供具体建议。您需要查看确切的查询以及它们采取的锁定。
以下是一些一般性建议:使用TRUNCATE
运行DEADLOCK_PRIORITY LOW
不会影响报告查询。只需稍微延迟重试该声明即可。
您还可以选择DEADLOCK_PRIORITY HIGH
来终止报告查询并确定截断的优先级。
您还可以使用LOW
重试10次,然后使用HIGH
强制执行此操作。
请注意,TRUNCATE
已完全处理并可以回滚。重试是安全的。