我想知道哪个并发控制更有效,悲观和乐观的并发控制?SQL Server2005使用悲观并发控制作为默认设置是否有特殊原因?是否出于与性能相关的原因?
期待中的感谢
发布于 2011-06-24 05:53:34
我不确定您所说的"SQL Server2005默认使用悲观并发控制“是什么意思。IMO SQL Server 2005为我们提供了允许我们自己实现乐观或悲观的工具。我在simple-talk上写了几个例子:Developing Modifications that Survive Concurrency
编辑:我不认为SQL Server的默认行为完全是“悲观的并发控制”。让我们考虑下面这个简单的例子,它在默认的隔离级别下运行,读提交:
-- Connection one
BEGIN TRANSACTION;
SELECT * FROM Schedule
WHERE ScheduledTime BETWEEN '20110624 06:30:00'
AND '20110624 11:30' ;
-- Connection two
UPDATE Schedule
SET Priority = 'High'
WHERE ScheduledTime ='20110624 08:45:00'
-- nothing prevent this update from completing,
-- so this is not exactly pessimistic
-- Connection one
DELETE FROM Schedule
WHERE ScheduledTime ='20110624 08:45:00' ;
COMMIT ;
-- nothing prevents us from deleting
-- the modified row发布于 2011-06-24 03:19:53
这完全取决于您的应用程序需要什么并发性。如果你正在开发一个OLTP应用,悲观主义可能是最好的……如果您正在开发单用户数据库,那么乐观就可以了。
https://stackoverflow.com/questions/6459433
复制相似问题