Sql server 哪种并发控制更有效悲观或乐观并发控制
我想知道哪种并发控制更有效,悲观还是乐观并发控制?SQLServer2005使用悲观并发控制作为默认值是否有特殊原因?是否出于与绩效相关的原因Sql server 哪种并发控制更有效悲观或乐观并发控制,sql-server,concurrency,Sql Server,Concurrency,我想知道哪种并发控制更有效,悲观还是乐观并发控制?SQLServer2005使用悲观并发控制作为默认值是否有特殊原因?是否出于与绩效相关的原因 这完全取决于应用程序的并发性需求。如果您正在开发OLTP应用程序,pessiimistic可能是最好的。。。如果您正在开发单用户数据库,乐观是可以的。我不确定“SQLServer2005默认使用悲观并发控制”是什么意思。IMO SQL Server 2005为我们提供了一些工具,使我们能够自己实现乐观或悲观。我写了几个简单谈话的例子: 编辑:我不认为SQ
这完全取决于应用程序的并发性需求。如果您正在开发OLTP应用程序,pessiimistic可能是最好的。。。如果您正在开发单用户数据库,乐观是可以的。我不确定“SQLServer2005默认使用悲观并发控制”是什么意思。IMO SQL Server 2005为我们提供了一些工具,使我们能够自己实现乐观或悲观。我写了几个简单谈话的例子: 编辑:我不认为SQL Server的默认行为正是“悲观并发控制”。让我们考虑下面的简单示例,它在默认隔离级别下运行,Read提交:
-- 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
您能否回答我问题的第二部分,即SQLServer2005使用悲观并发控制作为默认值有特殊原因吗?这是出于性能相关的原因吗?谢谢。悲观是“更安全的”,因为您永远不会忽略并发错误。SQL Server 2005是否没有默认的concurreny控件?但是当我在这里明确地问这个问题时:我被告知默认的是悲观并发控制。那么答案错了吗?