【发布时间】:2011-02-24 09:35:50
【问题描述】:
我需要执行一个包含 3 个引用同一个表的查询的存储过程:
合并……
从表中选择 X,其中 { BLA BLA }
从表中更新 Y,其中 { BLA BLA }
存储过程应该是线程安全的,并且应该作为原子操作执行。
目前,我正在使用具有可序列化隔离级别的事务,并且在每个查询上都有 WITH (XLOCK, TABLOCK) 提示。
有没有办法在存储过程的时间跨度内维持表锁定而不使用导致性能损失的事务?
干杯, 多伦
【问题讨论】:
-
为什么事务会导致性能损失?
-
如果我错了,请纠正我,当使用事务时,会创建一个日志以支持回滚功能,因此存在可能会产生性能损失的开销。当然,表锁有很大的性能损失,但不幸的是我不能放弃它。我的问题是,关于表锁定约束,我可以在不使用事务的情况下锁定并保持吗?多伦
标签: sql sql-server tsql