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

Проблема такая, в базе данных периодически возникают блокировки, когда один select блокирует другие, также SELECTы.
У всех блокирующих запросов уровень изоляции - Snapshot.
Селекты вообще не должны блокировать друг друга, так как накладывается лишь блокировка типа S.
Транзакции с TIL Snapshot также не должны блокировать друг друга.
Цитата с https://docs.microsoft.com/en-us/sql/t-sql/statements/set-transaction-isolation-level-transact-sql?view=sql-server-2017:
Except when a database is being recovered, SNAPSHOT transactions do not request locks when reading data. SNAPSHOT transactions reading data do not block other transactions from writing data . Transactions writing data do not block SNAPSHOT transactions from reading data.

К тому же в запросах блокирующем и заблокированных вообще идет обращение к разным таблицам, правда одной схемы.

В теме https://www.sql.ru/forum/798547/snapshot-isolation-select-blokiruet-insert товарищ Кудряшка в сообщении от 19 окт 10, 03:57 упомянул:"Версионный механизм разрешения конкуренции, если вы почитаете, то он накладывает иные блокировки при ЧТЕНИИ данных " - кто-нибудь в курсе блокировок при чтении?

Я что-то совсем не впиливаю, полный конец обеда. Подскажите куда копать люди добрые.
...
Рейтинг: 0 / 0
Snapshot транзакция блочит SELECT
    #39838911
tratata74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скриншот
...
Рейтинг: 0 / 0
Snapshot транзакция блочит SELECT
    #39838915
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tratata74,

Вы текст скрипта покажите. У вас там может ещё куча таблиц. Или транзакция обернута другой транзакцией.
...
Рейтинг: 0 / 0
Snapshot транзакция блочит SELECT
    #39838931
tratata74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,
Запрос 194 сессии:
(@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 nvarchar(4000)) SELECT COUNT(1) FROM SKUxLOC SL JOIN LOC L on SL.LOC = L.LOC JOIN SKUxLOC SL1 on SL1.LOC = SL.LOC WHERE L.Loc = @P0 AND L.CommingleSku = '0' AND SL.SKU = @P1 AND (SL.QTY > 0 OR SL.QTYLOCATIONLIMIT > 0) AND (SL1.SKU <> @P2 OR ( SL1.SKU = @P3 AND SL1.StorerKey <> @P4 )) and SL1.QTY > 0

в запросах 111 и 128 сессий нет обращений ни к SKUxLOC, ни к LOC.

Также был замечен блокирующий запрос(тоже с TIL Snapshot) с текстом: (@P0 nvarchar(4000))SELECT * FROM LOT WHERE Lot = @P0 . Уж тут то вообще проще некуда.
...
Рейтинг: 0 / 0
Snapshot транзакция блочит SELECT
    #39838939
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Читатель на TIL Snapshot может блокировать кого-то, если для каких-либо таблиц в запросе прописаны соответствующие хинты.
2. Результат на вашем скриншоте странный - при BlockedBy <> 0 status не может быть running
3. Покажите wait resource для заблокированных сессий.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Snapshot транзакция блочит SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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