Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 哪种并发控制更有效悲观或乐观并发控制_Sql Server_Concurrency - Fatal编程技术网

Sql server 哪种并发控制更有效悲观或乐观并发控制

Sql server 哪种并发控制更有效悲观或乐观并发控制,sql-server,concurrency,Sql Server,Concurrency,我想知道哪种并发控制更有效,悲观还是乐观并发控制?SQLServer2005使用悲观并发控制作为默认值是否有特殊原因?是否出于与绩效相关的原因 这完全取决于应用程序的并发性需求。如果您正在开发OLTP应用程序,pessiimistic可能是最好的。。。如果您正在开发单用户数据库,乐观是可以的。我不确定“SQLServer2005默认使用悲观并发控制”是什么意思。IMO SQL Server 2005为我们提供了一些工具,使我们能够自己实现乐观或悲观。我写了几个简单谈话的例子: 编辑:我不认为SQ

我想知道哪种并发控制更有效,悲观还是乐观并发控制?SQLServer2005使用悲观并发控制作为默认值是否有特殊原因?是否出于与绩效相关的原因


这完全取决于应用程序的并发性需求。如果您正在开发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控件?但是当我在这里明确地问这个问题时:我被告知默认的是悲观并发控制。那么答案错了吗?