powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллеьное удаление из таблицы вызывает ожидание на блокировке.
23 сообщений из 23, страница 1 из 1
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779765
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый.
Есть таблица, с именем _InfoRg6219 и колонками
[_Fld6220RRef]
[_Fld6221]
[_Fld6222_TYPE]
[_Fld6222_RTRef]
[_Fld6222_RRRef]
[_Fld6223RRef]
[_Fld281]
содержащая 7 млн строк данных и 2 индекса:
Кластерный
[_Fld281]
[_Fld6220RRef]
[_Fld6221]
[_Fld6222_TYPE]
[_Fld6222_RTRef]
[_Fld6222_RRRef]
[_Fld6223RRef]

и некластерный:
[_Fld281]
[_Fld6222_TYPE]
[_Fld6222_RTRef]
[_Fld6222_RRRef]
[_Fld6220RRef]
[_Fld6221]
[_Fld6223RRef]

Из этой таблицы в 2 транзакциях, параллельно удаляются записи запросом вида:
DELETE FROM T1
FROM dbo._InfoRg6219 T1
WHERE (T1._Fld6222_TYPE = 0x08 AND T1._Fld6222_RTRef = 0x000016E5 AND T1._Fld6222_RRRef = @P1) AND (T1._Fld281 = @P2)

План запроса прост, как палка и не менялся ни разу:
StmtText
--------
Clustered Index Delete(OBJECT:([DISTR_DE].[dbo].[_InfoRg6219].[_InfoRg6219_1] AS [T1]), OBJECT:([DISTR_DE].[dbo].[_InfoRg6219].[_InfoRg6219_2] AS [T1]), OBJECT:([DISTR_DE].[dbo].[_InfoRg6219].[_InfoRg6219_3] AS [T1]) WITH UNORDERED PREFETCH)
|--Index Seek(OBJECT:([DISTR_DE].[dbo].[_InfoRg6219].[_InfoRg6219_2] AS [T1]), SEEK:([T1].[_Fld281]=[@P2] AND [T1].[_Fld6222_TYPE]=0x08 AND [T1].[_Fld6222_RTRef]=0x000016E5 AND [T1].[_Fld6222_RRRef]=[@P1]) ORDERED FORWARD)


Уровень изоляции транзакции - READ COMMITTED SNAPSHOT

В случае, если удаляется до 500 записей, транзакции выполняются параллельно, если записей больше 5000 - 2 транзакция ждет первую.
Во всех случаях - попадание в индекс есть, сколько строк к удалению - столько строк и прочитано в Index Seek.

Эскалаций блокировки в событиях профайлера не увидел.

В событии timeout lock Блокировка - IX на объекте _InfoRg6219

Что я не понимаю или делаю не так?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779769
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так посмотрите на каком ресурсе ждет.

UPD:
Ежов Дмитрий Сергеевич timeout lock Блокировка - IX на объекте _InfoRg6219 Запрещайте эскалацию, понижайте уровень гранулярности блокировок.
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779771
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий Сергеевич5000

5000 - "магическое" число эскалации блокировок

Запретите эскалацию на уровне таблицы

ALTER TABLE ... SET ( LOCK_ESCALATION = DISABLE)
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779789
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

а почему я не вижу эскалацию в профайлере?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779793
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, вижу, дико извиняюсь, стоял фильтр по другой БД
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779797
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так.
Управлять эскалацией блокировки я не могу, запрос делает наша прекрасная 1С и вмешаться в его работу я не могу.
Я могу менять только параметр locks и флаги трассировки:
https://docs.microsoft.com/ru-ru/previous-versions/sql/sql-server-2005/ms188396(v=sql.90)
DBCC TRACEON (1221,-1);
DBCC TRACEON (1224,-1);

В MSDN говориться, что может не хватить памяти, но у нас на сервере SQL 1 Тб памяти, из которой SQL пользует только 600-700 Гб.

Кто пользовался этой штукой?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779802
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий Сергеевич,

96 байт на одну... может и не хватит :) Но вроде под блокировки не всё может выделить
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779807
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вру, то можно ограничить максимум

sp_configure 'locks'
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779820
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий Сергеевич,

емнип игры с этой настройкой заканчиваются экспоненциальным ростом времени выполнения запроса. Граница там не от скуки сделана.
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779829
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовЕжов Дмитрий Сергеевич,

емнип игры с этой настройкой заканчиваются экспоненциальным ростом времени выполнения запроса. Граница там не от скуки сделана.
т.е. время которое будет вызывано ожиданием получения блокировки лучше
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779835
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если просто включить флаг DBCC TRACEON (1224,-1); ?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779838
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий Сергеевича если просто включить флаг DBCC TRACEON (1224,-1); ?
Правильно это отключить эскалация на конкретном объекте, а не во всём борделе. Почему вам это запрещает 1С не ясно
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779849
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

потому что сам запрос формирует сервер 1С, закрытое приложение.
Но, собственно, вопрос снят, нашел рекомендации самой 1С по флагам трассировки
https://its.1c.ru/db/metod8dev#content:5946:hdoc
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779851
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий СергеевичTaPaK,

потому что сам запрос формирует сервер 1С, закрытое приложение.
Но, собственно, вопрос снят, нашел рекомендации самой 1С по флагам трассировки
https://its.1c.ru/db/metod8dev#content:5946:hdoc
я всё равно не могу понять, запрос - запросом, таблица - таблицей
ALTER TABLE ... SET ( LOCK_ESCALATION = DISABLE)
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779854
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

стоп.
ALTER TABLE ... SET ( LOCK_ESCALATION = DISABLE)
выключит эскалацию блокировок для таблицы раз и навсегда?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779858
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий СергеевичTaPaK,

стоп.
ALTER TABLE ... SET ( LOCK_ESCALATION = DISABLE)
выключит эскалацию блокировок для таблицы раз и навсегда?
доставка мануала на дом:
авторDISABLE Prevents lock escalation in most cases. Table-level locks aren't completely disallowed. For example, when you're scanning a table that has no clustered index under the serializable isolation level, Database Engine must take a table lock to protect data integrity.

для вас это "выключит эскалацию блокировок для таблицы раз и навсегда"
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39779860
Фотография Ежов Дмитрий Сергеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

спасибо тебе, добрый человек.
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780002
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ежов Дмитрий Сергеевич,

рискуете нагрузить журнал так, что сервер чихнуть не сможет. Однако, практика - критерий истины. Расскажете, что получилось, если будет желание.
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780004
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовЕжов Дмитрий Сергеевич,

рискуете нагрузить журнал так, что сервер чихнуть не сможет. Однако, практика - критерий истины. Расскажете, что получилось, если будет желание.
а журнал то при чём?
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780006
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

разве блокировки не пишутся в журнал? Надо освежить...
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780007
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовTaPaK,
разве блокировки не пишутся в журнал? Надо освежить...
я могу и ошибаться, но зачем в принципе это для лога транзакций
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780019
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKВладислав КолосовTaPaK,
разве блокировки не пишутся в журнал? Надо освежить...
я могу и ошибаться, но зачем в принципе это для лога транзакций

Пишутся, вместе с операцией изменения

Нужно это, для того, чтобы в стадии UNDO база была доступна для изменения.
В стадии REDO накладываются блокировки а затем получается как бы обычный откат транзакции в рабочей базе.
...
Рейтинг: 0 / 0
Параллеьное удаление из таблицы вызывает ожидание на блокировке.
    #39780037
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexTaPaKпропущено...

я могу и ошибаться, но зачем в принципе это для лога транзакций

Пишутся, вместе с операцией изменения

Нужно это, для того, чтобы в стадии UNDO база была доступна для изменения.
В стадии REDO накладываются блокировки а затем получается как бы обычный откат транзакции в рабочей базе.
да, информация о блокировках есть. Но "больше данных" её не становится от количества этих самих блокировок. Просто для блокировки будет в строке аля
HoBt 72057594044022784:ACQUIRE_LOCK_X OBJECT: 15:1586104691:0
для ключа
HoBt 72057594044022784:ACQUIRE_LOCK_IX OBJECT: 15:1586104691:0 ;ACQUIRE_LOCK_IX PAGE: 15:1:832 ;ACQUIRE_LOCK_X KEY: 15:72057594044022784 (fb4bcb376b2f)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Параллеьное удаление из таблицы вызывает ожидание на блокировке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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