SQL Server очень медленно удаляет глобальные временные таблицы

#sql-server

Вопрос:

Запуск SQL Server 2016

У меня возникла проблема, из-за которой удаление таблиц в базе данных tempdb занимает от 20 до 30 секунд. В противном случае все базы данных (включая базу данных tempdb), похоже, работают нормально. ВЫБЕРИТЕ, ОБНОВИТЕ, ВСТАВЬТЕ и УДАЛИТЕ все, как ожидалось. Я гарантировал, что на столах нет открытых транзакций. Даже приведенный ниже пример зависает:

 CREATE TABLE ##delme (foo INT)
DROP TABLE ##delme
 

Даже при закрытии сеанса и всех транзакций, создавших глобальную временную таблицу, неявное удаление этой таблицы занимает одинаковое количество времени (20-30 секунд). Единственное решение, которое у меня пока есть, — это перезапустить службу SQL Server, которая далека от идеала в производственной среде, и проблема в конечном итоге все равно вернется.

Есть ли какой-либо способ отследить или диагностировать, что может быть причиной такого замедления?

ИЗМЕНИТЬ: Добавлена статистика ожидания сеанса:

Статистика ожидания сеанса от sys.dm_exec_session_wait_stats

Комментарии:

1. Попробуйте СОЗДАТЬ ТАБЛИЦУ #delme (foo INT) и создайте временные таблицы , подобные этой, без ## . Избегайте использования ## для создания таблиц, это замедляет работу каждого sql-сервера.

2. @Adamszsz та же проблема и с локальными временными таблицами

3. Какова статистика ожидания сеанса для сеанса, который просто создает и удаляет временную таблицу? docs.microsoft.com/en-us/sql/relational-databases/…

4. Получите whoisactive и запустите его из другого сеанса, чтобы узнать, чего он ждет или заблокирован

5. @DavidBrowne-Microsoft Я отредактировал исходное сообщение, чтобы включить статистику ожидания сеанса