Выражение вопроса:
Я пробую несколько вещей относительно транзакций. Рассмотрим следующие операции:
- Откройте окно подключения 1 в SQL Server Management Studio
BEGIN
транзакцию, затем удалите около 2000 строк данных из таблицы A - Откройте другое окно подключения 2 в SQL Server Management Studio
- Вставьте одну новую строку данных в таблицу A в окне 2 (без транзакций), сейчас она успешно выполняется
ЗатемЯ повторяю ту же операцию, но в ШАГЕ 2 я удаляю 10 тыс. Строк данных, в этом случае ШАГ 4 не может работать успешно. Я уже ждал полчаса.
Это показывает, что он выполняет SQL ... не может завершиться. Наконец, я вставляю данные, используя окно подключения 1, оно работает прямо сейчас.
Почему оно работает с 2k строк, а не с 10k строк?
Предложение Sql Iвыполнить:
В окнах соединения A я выполняю BEGIN TRAN Delete из таблицы A (10K строк)
В окнах соединения B я выполняю Вставить в таблицу A (..) ЗНАЧЕНИЯ (. ..)
Windows B не может успешно выполнить.
Большое спасибо @Gordon
Причина :
Я ищу ключевое слово о повышении блокировки. Я пытаюсь отслеживать эскалацию блокировки с помощью SQL Server Profiler и получаю блокировку: эскалация, когда я удаляю много данных в транзакции (я не фиксирую и не откатываю).
Итак, я знаю концепцию блокировкиэскалация. Я удаляю слишком много данных в таблице, затем строка блокирует эскалацию таблицы до эскалации таблицы. Я не фиксировал и не откатывал их, другое соединение (или приложение) не может получить доступ к таблице с помощью блокировки таблицы. Повышение блокировки трассировки в SQL Server Profiler
Когда повышение защиты происходит в MSSQL Server
"Параметр блокировки также влияет при повышении блокировкиКогда блокировка установлена в 0, эскалация блокировки происходит, когда память, используемая текущими структурами блокировки, достигает 40 процентов пула памяти компонента Database Engine. Когда блокировки не установлены в 0, эскалация блокировки происходит, когда количество блокировок достигает 40 процентов. значения, указанного для блокировок. "
Как установить Использование SQL Server Management Studio, которое повлияет на повышение блокировки:
Чтобы настроить параметр блокировки в объектеВ проводнике щелкните правой кнопкой мыши сервер и выберите «Свойства».
Щелкните узел «Дополнительно».
В разделе «Параллелизм» введите нужное значение для параметра блокировки.
Используйте параметр блокировкизадать максимальное количество доступных блокировок, например, ограничение объема памяти, используемого SQL Server для них.