2015-01-07 2 views
0

Я понимаю, что при перезагрузке SQL-сервера (или) сокращение базы данных приведет к освобождению выделенной памяти, к сожалению, это не подходит для моего клиента.Когда Temp DB восстановит выделенное пространство?

Если размер temp db составляет 10 МБ, он выращен в 500 МБ после выполнения процедуры temp db имеет свободный размер 490mb ..IS, любой способ, которым мы можем освободить выделенный размер и вернуть его. Создайте tempdb обратно до 10mb без перезагрузки или сокращения вручную?

+0

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

+0

Темп растет до очень большого размера, но используемое пространство составляет всего 10% от выделенного размера. Относительно роста говорят, что 90 гб носитель данных становится полным. Есть ли способ, чтобы мы могли изменить размер автоматизированного tempdb на нужно 10% пространства и освободить оставшиеся? – Saravana

+0

Но это моя точка зрения. У вас, очевидно, есть текущие потребности в том, чтобы tempdb был таким большим. Сократив это, вы десять бросаетесь на что-то еще, утверждая, что Soave и tempdb не могут расти настолько, насколько это необходимо. Что произойдет, если это произойдет? –

ответ

1

Restart или усадка будут наиболее эффектных вариантов здесь, но вы (на свой страх и риск) использовать DBCC, чтобы очистить некоторые из кэшей и буферов (то есть: DBCC FREEPROCCACHE, DBCC DROPCLEANBUFFERS)

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

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

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

+0

Я пробовал команды, но не восстанавливал свободное пространство. Есть ли другой способ? – Saravana

+0

Не знаю, что я знаю –

1

Сокращение - это плохая привычка. Это может привести к фрагментации.

Размер TempDb повторно инициализируется при перезагрузке служб SQL Server. Итак, если у вас начальный размер 20 ГБ, то после перезагрузки SQL будет иметь 20-дневный файл tempdb. Буферы очистки и кеш не будут сокращать файлы TempDb. Очистка буферов и кеш не рекомендуется делать в рабочей среде в рабочие часы, пока у вас не будет веских оснований для этого.

Лучшая практика заключается в том, чтобы оптимальный размер TempDb для вашей операции SQL; вы можете иметь несколько файлов TempDb и предоставить SQL преимущество параллельной работы. Я работаю над большими решениями DW, размером более 4 ТБ, и мы перезапускаем наши услуги каждые выходные (нерабочие часы).

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

Смежные вопросы