Назад | Перейти на главную страницу

Размер tempdb SQL Server кажется большим, это нормально?

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

В одном из экземпляров моей базы данных у меня есть tempdb, которая кажется очень большой (30 ГБ). Эта база данных не изменялась (как в «дате последнего изменения» в mdf-файле) более недели. Нормально ли, чтобы temp db оставалась такой большой в течение такого длительного периода? Мне кажется, что он должен обновляться довольно часто и довольно быстро возвращать пространство, которое он использует ...

Я далеко отсюда или SQL Server делает что-то странное?

К вашему сведению: это база данных SharePoint 2010, не уверен, что это имеет значение.

TempDB не будет выполнять AUTOSHRINK, и вы не можете установить для TempDB значение AUTOSHRINK. Если ваш TempDB вырос до 30 ГБ, он, вероятно, вырос до этого размера по какой-то причине, поэтому, если вы измените его размер, чтобы он был меньше, он, скорее всего, снова вырастет до этого размера.

Ознакомьтесь со следующими ссылками, чтобы узнать о некоторых предложениях по настройке TempDB:

Оптимизация производительности TempDB

Планирование емкости для TempDB

Файлы базы данных SQL Server не сжимаются автоматически, если вы им не скажете. (И я бы не рекомендовал это, поскольку вы получите много фрагментации диска из-за многократного увеличения / сжатия.) Другими словами, выясните, насколько большой должна быть ваша база данных tempdb, и спланируйте это. Как правило, рекомендуется настроить файлы данных таким образом, чтобы они были красивыми и большими (поскольку они воссоздаются с нуля при запуске SQL Server).

Хотя размеры файлов указаны как 30 ГБ, они могут быть заполнены пустым пространством и фактически не содержат 30 ГБ размера файла. В какой-то момент TEMPDB увеличился бы до 30 ГБ, потому что ему требовалось много места для некоторых определенных запросов.

Я бы порекомендовал вам установить размер файла TEMPDB равным 30 ГБ - это будет предварительное значение TEMPDB для вас в случае перезапуска SQL SERVER, поскольку TEMPDB воссоздается каждый раз при перезапуске SQL Server. Предварительно определив размер TEMPDB, вы избежите лишних затрат, связанных с автоматическим увеличением базы данных во время действия, которое в первую очередь привело к ее росту.

Эта страница, http://sqlserverpedia.com/wiki/TempDB, в разделе 4 будет пройдена предварительная настройка temp db.