Найкраща практика зменшення Tempdb у виробничих умовах


24

Яку найкращу практику слід використовувати при зменшенні тимчасового db у SQL Server 2008?

Чи ризикувати використовувати наступне?

use tempdb
GO

DBCC FREEPROCCACHE -- clean cache
DBCC DROPCLEANBUFFERS -- clean buffers
DBCC FREESYSTEMCACHE ('ALL') -- clean system cache
DBCC FREESESSIONCACHE -- clean session cache
DBCC SHRINKDATABASE(tempdb, 10); -- shrink tempdb
dbcc shrinkfile ('tempdev') -- shrink db file
dbcc shrinkfile ('templog') -- shrink log file
GO

-- report the new file sizes
SELECT name, size
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO

Найкраща практика - розробити те, що сприяє зростанню, і вирішити це. Якщо ви зменшите його, він просто повинен рости знову, і це потребує часу і IO
Nick.McDermaid

Так, я знаю. Але коли я повинен викликати пізню активність :) Це найкраще рішення?

Вибачте, я не можу вам тут допомогти.
Nick.McDermaid

Відповіді:


11

Найкраща практика - це активно контролювати нормальне використання Tempdb і відповідно встановлювати розмір. Якщо це єдиний випадок, коли Tempdb виріс до такого розміру і його PROD env, я б перезапустив служби SQL Server під час щотижневого обслуговування. Там після Tempdb повернеться до налаштованого розміру.

Стискання файлу добре, доки Tempdb не використовується, інакше існуючі транзакції можуть вплинути з точки зору продуктивності через блокування та тупикові місця.

Кеш процедур очищення, кеш-пам'ять буфера тощо буде мати негативний вплив на саму роботу бази даних, поки вони не будуть створені заново. Я б не робив цього в PROD.

Сподіваюся, що це допомагає!


Дякую за благодійний внесок. Чи достатньо перевірити у sp_who для процесів у tempdb?

1
Я не думаю, що це надійний спосіб з’ясувати, чи не використовується temp db. Я думаю, що це з'явиться лише в тому випадку, якщо хтось створює темп-таблицю безпосередньо в SSMS. Але якщо те ж саме робиться в результаті операції запиту через розливу пам'яті тощо, то це не відображатиметься в sp_who2. Це запитання може бути окремою темою. Будь ласка, створіть це, оскільки це окрема дискусія. Якщо попередня відповідь допомогла вам, позначте це як відповідь. Це допоможе іншим у подібній ситуації.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.