какой контроль параллелизма является более эффективным пессимистическим или оптимистичным контролем параллелизма - PullRequest
1 голос
/ 23 июня 2011

Хотелось бы узнать, какой контроль параллелизма более эффективен, пессимистичен или оптимистичен? Есть ли особая причина, по которой SQL Server 2005 по умолчанию использует пессимистический контроль параллелизма? Это связано с производительностью?

Спасибо в ожидании

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Это полностью зависит от потребностей параллелизма в вашем приложении.Если вы разрабатываете приложение OLTP, пессимистично, вероятно, будет лучше ... Если вы разрабатываете однопользовательскую базу данных, оптимизм - это хорошо.

1 голос
/ 24 июня 2011

Я не уверен, что вы подразумеваете под «SQL Server 2005 использует пессимистический контроль параллелизма по умолчанию».IMO SQL Server 2005 предоставляет нам инструменты, которые позволяют нам реализовывать оптимистический или пессимистичный подход.Я написал несколько примеров для simple-talk: Разработка модификаций, сохраняющих параллелизм

Редактировать: я не думаю, что поведение SQL Server по умолчанию является именно «пессимистичным контролем параллелизма».Давайте рассмотрим следующий простой пример, который работает с уровнем изоляции по умолчанию READ COMMITTED:

-- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...