powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Процесс переходит в состояние Sleeping
5 сообщений из 5, страница 1 из 1
Процесс переходит в состояние Sleeping
    #32016364
Vovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята проблема следующая:

работают несколько параллельных процессов, каждый из которых обращается к одной и той же таблице. Процессы разделяться на две категории: одни читают данные из таблицы другие эти, данные обновляют. Во избежание Dead Lockов мы во время апдейтов данных решили использовать Exclusive lock на всю таблицу. В этом случае все процессы обновления данных выстраиваются в очередь и ждут даже процесс читающий данные. Работая с маленькими базами никаких проблем не возникало, но на больших объемах данных процесс чтения (выгрузка данных клиенту) может занимать 1-3 часа и здесь происходит следующая ситуация. Этот процесс чтения данных (SELECT) блокирует таблицу Shared lockoм и все процессы обновляющие таблицу ждут его окончания. Спустя некоторое время этот процесс переходит в состояние Sleeping и все замирает. Это случается только с очень большими массивами данных и сам процесс из этого состояние (Sleeping) не выходит.
Мы наблюдали, как при неких манипуляциях с SQL сервером через Enterprise Manager спящий процесс снова начинал работать.

Как вы считаете это баг SQL сервера или что?

hardware/software configuration:
DELL 2 x P700Mhz, HDD 200 + 200 Gb, 4Gb RAM;
Windows NT 4.0 SP6;
SQL 7.0 Standard SP2
...
Рейтинг: 0 / 0
Процесс переходит в состояние Sleeping
    #32016380
При блокировании всей таблицы всякие чудеса возможны, удивляться тут нечему. Не надо этого делать. Дидлоки на пустом месте не возникают в массовом порядке, просто в логике - ошибка, не все учтено или неправильное употребление транзакций. Лечение дидлоков блокировкой таблицы то же самое, что лечение головной боли отрубанием головы.
...
Рейтинг: 0 / 0
Процесс переходит в состояние Sleeping
    #32016395
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Полностью согласен с Глебом Уфимцевым. При блокировке всей таблицы вероятность дедлоков не уменьшается, а увеличивается.
...
Рейтинг: 0 / 0
Процесс переходит в состояние Sleeping
    #32016405
Vovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понимаете, происходит апдейт 1/3 - 1/2 части таблицы. Мне нет смысла сочить отдельные записи или страницы - дольше и проблем, на мой взгляд, больше.
Почему Вы стичаете, что при Exclusive ном локе таблице вероятность дедлоков не уменьшается, а увеличивается.
Не понимаю...
...
Рейтинг: 0 / 0
Процесс переходит в состояние Sleeping
    #32016422
Если у вас изменение 1/3-1/2 таблицы - штатный режим, вам следует изменить логику приложения и структуру базы. Всегда можно придумать какое-нибудь ухищрение. Например, такое простое (неэлегантное, однако) решение сходу: апдейтите мощно клон таблицы (чтецы свободно читают исходную, пока вы долго апдейтите клон), а потом одной транзакцией за доли секунды исходную дропаете, а клон (проапдейтенный) переименовываете в исходную. Никто никого не ждет, все довольны, для дидлоков поля деятельности не видно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Процесс переходит в состояние Sleeping
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]