存储过程锁 table
StoredProcedures locks table
我有一个存储过程需要几分钟才能执行。此 StoredProcedure 确实在不同的 table 上进行了多次选择、(批量)更新和插入。
现在,当这个 StoredProcedure 正在执行时,被更新的 tables 被锁定。在存储过程的开始,布尔标志从 1 切换到 0,在结束时标志从 0 切换到 1。
现在,其他在此 tables 上进行插入或更新的语句(从 StoredPROcedure 更新)在 StoredProcedure 执行期间被锁定(这会导致超时异常)。
有没有办法让 StoredPROcedure 不锁定任何 table?我也尝试了 IsolationLevel ReadUncommited,但这个 IsolationLevel 仍然存在问题。
对此没有快速的答案。你需要花点时间研究 Locking in SQL Server。并了解事务为您提供什么、锁可以做什么和不能做什么、持有锁多长时间、隔离级别。
一旦你有了更好的理解,你应该能够回答我们赢得的问题,或者至少提出一个更有针对性的问题。
我有一个存储过程需要几分钟才能执行。此 StoredProcedure 确实在不同的 table 上进行了多次选择、(批量)更新和插入。 现在,当这个 StoredProcedure 正在执行时,被更新的 tables 被锁定。在存储过程的开始,布尔标志从 1 切换到 0,在结束时标志从 0 切换到 1。 现在,其他在此 tables 上进行插入或更新的语句(从 StoredPROcedure 更新)在 StoredProcedure 执行期间被锁定(这会导致超时异常)。
有没有办法让 StoredPROcedure 不锁定任何 table?我也尝试了 IsolationLevel ReadUncommited,但这个 IsolationLevel 仍然存在问题。
对此没有快速的答案。你需要花点时间研究 Locking in SQL Server。并了解事务为您提供什么、锁可以做什么和不能做什么、持有锁多长时间、隔离级别。
一旦你有了更好的理解,你应该能够回答我们赢得的问题,或者至少提出一个更有针对性的问题。