Нераспределить неиспользуемое пространство на сервере базы данных tempdb
Любой сценарий на сервере SQL, чтобы найти пространство, используемое временными таблицами + имя базы данных, где эта временная таблица была создана в базе данных tempdb?
Размер моей базы данных tempDb вырос до 100 ГБ, и я не могу восстановить пространство и не уверен, что занимает так много места.
Спасибо за любую помощь.
2 ответа
Временные таблицы всегда создаются в TempDb. Однако необязательно, что размер TempDb обусловлен только временными таблицами. TempDb используется по-разному
- Внутренние объекты (Sort & spool, CTE, перестроение индекса, хеш-соединение и т. Д.)
- Пользовательские объекты (временная таблица, табличные переменные)
- Магазин версий (триггеры 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 для получения дополнительной информации