powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Взаимоблокировки при автоматическом создании статистики
10 сообщений из 10, страница 1 из 1
Взаимоблокировки при автоматическом создании статистики
    #39976436
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искал, в чем "тормоза", оказалось, что запрос приводит к взаимоблокировке при автоматическом создании статистики. Отключение этой настройке в базе приводит к моментальному выполнению. Причем, эти блокировки не завершают аварийно запрос (костыль от SQL team?). Выполняется SELECT из очереди брокера в качестве теста очереди.

Как это можно победить, если ли возможность хинтами или трейсфлагом отключить автосоздание статистик при запросе?
...
Рейтинг: 0 / 0
Взаимоблокировки при автоматическом создании статистики
    #39976444
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. xdl-файл практически бесполезен для анализа.
2. Вариант создания необходимых статистик вручную не рассматривается?
...
Рейтинг: 0 / 0
Взаимоблокировки при автоматическом создании статистики
    #39976465
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

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

Просто хочу поинтересоваться: а в чем сакральный смысл использования ddl инструкций в перемешку с dml в единой транзакции?

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

это тест, поэтому и мешанина.

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

что лучше использовать для анализа? Этот файл (xml) получен из данных расширенных событий.
...
Рейтинг: 0 / 0
Взаимоблокировки при автоматическом создании статистики
    #39976634
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Я имел в виду, выкладывать сразу в виде xml. Иначе нужны лишние действия по сохранению и переименованию.

Если судить по
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 <resource-list>
  <objectlock lockPartition="0" objid="2116254644" subresource="FULL" dbid="6" objectname="unknown" id="lock2018ddc2080" mode="Sch-M" associatedObjectId="2116254644">
   <owner-list>
    <owner id="process201c71d44e8" mode="Sch-S" requestType="wait" />
   </owner-list>
   <waiter-list>
    <waiter id="process201c073a8c8" mode="Sch-S" requestType="wait" />
   </waiter-list>
  </objectlock>
  <objectlock lockPartition="0" objid="2116254644" subresource="FULL" dbid="6" objectname="unknown" id="lock2018ddc2080" mode="Sch-M" associatedObjectId="2116254644">
   <owner-list>
   <owner id="process201c073a8c8" mode="Sch-M" />
   <owner id="process201c073a8c8" mode="Sch-S" requestType="wait" />
   </owner-list>
   <waiter-list>
    <waiter id="process201c71d44e8" mode="Sch-S" requestType="wait" />
   </waiter-list>
  </objectlock>
 </resource-list>
</deadlock>


Дедлок вообще какой-то странный и непонятный.
Спорный ресурс один...
process201c073a8c8 конфликтует сам с собой...

Имхо, самый простой выход - установить deadlock priority = high.
Еще можно попробовать убрать NOLOCK.
...
Рейтинг: 0 / 0
Взаимоблокировки при автоматическом создании статистики
    #39976635
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Вы можете создать необходимые статистики для очереди вручную, поскольку очередь это всего лишь таблица. правда нужно подключение через DAC.

Другой вариант сделать несколько селектов с необходимой фильтрацией по колонкам по которым нужна статистика сервер ее тогда сам создаст. (при auto_create_statistics конечно)

что лучше использовать для анализа?

Так в том то и проблема что конфликтуют Sch-M с Sch-S

Sch-M получается из-за ALTER QUEUE, а Sch-S пытается получить любая читающая сессия.

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

Спасибо за рекомендации.
...
Рейтинг: 0 / 0
Взаимоблокировки при автоматическом создании статистики
    #39976658
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Sch-S пытается получить любая читающая сессия.
Не совсем.
Только "безблокировочные", т.е. nolock или rcsi или snapshot. Остальные накладывают IS уровня таблицы.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Взаимоблокировки при автоматическом создании статистики
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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