Нераспределить неиспользуемое пространство на сервере базы данных tempdb

Любой сценарий на сервере SQL, чтобы найти пространство, используемое временными таблицами + имя базы данных, где эта временная таблица была создана в базе данных tempdb?

Размер моей базы данных tempDb вырос до 100 ГБ, и я не могу восстановить пространство и не уверен, что занимает так много места.

Спасибо за любую помощь.

2 ответа

Решение

Временные таблицы всегда создаются в TempDb. Однако необязательно, что размер TempDb обусловлен только временными таблицами. TempDb используется по-разному

  1. Внутренние объекты (Sort & spool, CTE, перестроение индекса, хеш-соединение и т. Д.)
  2. Пользовательские объекты (временная таблица, табличные переменные)
  3. Магазин версий (триггеры AFTER/INSTEAD OF, MARS)

Итак, ясно, что он используется в различных операциях SQL, поэтому размер может увеличиваться и по другим причинам.

Вы можете проверить, что заставляет TempDb увеличиваться в размере с помощью запроса ниже

SELECT
 SUM (user_object_reserved_page_count)*8 as usr_obj_kb,
 SUM (internal_object_reserved_page_count)*8 as internal_obj_kb,
 SUM (version_store_reserved_page_count)*8  as version_store_kb,
 SUM (unallocated_extent_page_count)*8 as freespace_kb,
 SUM (mixed_extent_page_count)*8 as mixedextent_kb
FROM sys.dm_db_file_space_usage

если приведенный выше запрос показывает,

  • Чем больше пользовательских объектов, тем это означает, что больше используется временных таблиц, курсоров или временных переменных
  • Большее количество внутренних объектов указывает на то, что план Query использует много базы данных. Пример: сортировка, группировка и т. Д.
  • Большее количество хранилищ версий показывает длительную транзакцию или высокую пропускную способность транзакции

на основании этого вы можете настроить размер файла TempDb. Недавно я написал статью о рекомендациях по настройке TempDB. Вы можете прочитать это здесь

Возможно, вы можете использовать следующую команду SQL для временных файлов базы данных отдельно

DBCC SHRINKFILE

Пожалуйста, обратитесь к https://support.microsoft.com/en-us/kb/307487 для получения дополнительной информации

Другие вопросы по тегам