Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите пожалуйста решение проблемы  [new]
kogany
Member

Откуда:
Сообщений: 35
Здравствуйте

Подскажите решение проблемы
У меня есть ценральная таблица Orders которая обычно пуста
В определенный момент в таблицу вносятся приблизительно 10000 записей
С другой стороны у меня находятся 4 Application servers которые постоянно стирают даные из таблицы(каждую секунду)
при помощи
DELETE OUTPUT @TABLEVARIABLE
Как можно избежать LOCK между записями и стерением без разделения таблицы на несколько.

Заранее благодарен
15 мар 13, 12:35    [14052153]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пожалуйста решение проблемы  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Для начала надо определить, какие блокировки возникают, и только потом, имея дополнительную информацию о структуре таблицы, индексах и запросах, ее модифицирующих, можно попытаться разрулить ситуацию.
15 мар 13, 12:46    [14052229]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите пожалуйста решение проблемы  [new]
Crimean
Member

Откуда:
Сообщений: 13147
готовим "стендик":

-- drop table dbo.a1
create table dbo.a1 ( id int primary key , flag int not null )

insert into dbo.a1 select 1 , 1
insert into dbo.a1 select 2 , 2
insert into dbo.a1 select 3 , 3

select * from dbo.a1


тестовый запросик, выполнять в куче кверей по 1 строке за 1 раз:

begin tran

delete top (1) from dbo.a1 with (xlock, readpast)

commit


в 4 кверях "одновременно" у меня удалилось 1, 1, 1, 0 записей "конкурентно" до закрытия транзакций. после коммита табличка оказалась пустая. никто никого не ждал. 2008 R2 + RCSI на всякий случай
15 мар 13, 13:56    [14052733]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить