Размер TempDB в SQL Server 2005 - PullRequest
       22

Размер TempDB в SQL Server 2005

0 голосов
/ 11 марта 2011

Мы используем SQL Server 2005. Недавно SQL Server 2005 вышел из строя в нашей производственной среде из-за большого размера базы данных tempdb.1) что может быть причиной большого размера базы данных tempdb?2) Есть ли способ посмотреть, какие данные есть в базе данных tempdb?

Ответы [ 4 ]

1 голос
/ 11 марта 2011

2) Есть ли способ посмотреть, какие данные есть в базе данных tempdb?

Нет, потому что он там не хранится.Tempdb имеет особый подход, например, удаление при каждом перезапуске сервера.

1) что может быть причиной большого размера базы данных tempdb?

Неэффективный SQL, задания по обслуживанию или простоданные под рукой.Очевидно, что для базы данных объемом 800 ГБ, 6000 ГБ может потребоваться больше места в базе данных tempdb, чем для попытки оперативной работы с crm на 4 ГБ.Вы не указываете ЛЮБОЙ размер в абсолютном выражении.Что такое большой?У меня есть базы данных tempdb, жестко запрограммированные на 64-гигабайтных серверах меньшего размера.

Типичные SQL, которые входят в Tempdb:

  • Сортировки, которые не разрешимы как часть запроса (вам необходимо сохранитьключи где-то)
  • DISCTINCT.Чтобы найти дубликаты, нужны все возвращенные данные в базе данных tempdb.
  • Возможны определенные элементы при объединениях.
  • Использование Tempdb (временные таблицы).Я просто упоминаю их, потому что я часто держу в них данные в несколько сотен мегабайт во время загрузки и очистки.

В общем, вы можете найти эти запросы, имея огромную статистику ввода-вывода в журнале запросов или простомедленно.

Тем не менее, планы технического обслуживания также идут там, но с разумом.В конце концов, ваш «большой», возможно, мой «даже не стоит упоминать крошечный».Это действительно зависит от того, что вы делаете.Используйте инструмент трассировки запросов, чтобы выяснить, что занимает много времени.

Физически Tempdb очень специфичен в обработке - сервер sql НЕ записывает в файл, если он не обязан (т.е. хранит thins в памяти).Запись на диск является признаком текущей памяти.Это отличается от обычного поведения записи в БД.Tempdb, если он течет, лучше всего поставить на достаточно быстрый SSD ... который обычно не будет ТАК дорогим, потому что он все еще будет относительно небольшим.

Используйте этот запрос здесь, чтобы найти другие запросы для tempdb - basicalyВы ловите рыбу в грязной воде, вам нужно попробовать что-нибудь, пока не найдете виновника.

0 голосов
/ 08 декабря 2014

использовать tempdb

выберите (размер * 8) как FileSizeKB из sys.database_files

0 голосов
/ 11 марта 2011

Хорошо, tempdb - это своего рода специальная база данных. Любые временные объекты, которые вы используете в процедурах и т. Д., Создаются здесь. Поэтому, если ваше приложение использует много временных таблиц в запросах, они все будут находиться здесь, но они должны очиститься после сброса соединения (spid).

Другая вещь, которая может вырастить базу данных tempdb, - это задачи обслуживания базы данных, однако они будут больше сказываться на файлах журнала базы данных.

Tempdb также очищается при каждом перезапуске службы SQL. Это в основном отбрасывает базу данных и воссоздает ее. Я согласен с @Nic по поводу того, что оставить tempdb как есть, не пытаться с этим справиться, любые проблемы с пробелом в tempdb, как правило, указывают на еще одну большую проблему где-то еще. Больше места замаскирует проблему, но только так долго. Сколько свободного места у вашего диска, на котором у вас есть tempdb?

Другое дело, если еще нет, попробуйте поместить tempdb на свой собственный диск, и еще один, если это возможно, хранить данные и файлы журналов на своих отдельных дисках.

Так что, если вы не перезапустите ваш SQL Server / Service, ваш диск скоро освободится.

0 голосов
/ 11 марта 2011

Обычный способ вырастить базу данных SQL Server - любую базу данных, а не только tempdb - это установить для своих данных и файлов журнала автоматическое наращивание (особенно файлов журналов).SQL Server прекрасно работает с файлами журналов и данных до тех пор, пока не займет все доступное для них дисковое пространство.

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

...