Jakiej najlepszej praktyki należy używać podczas zmniejszania tymczasowej bazy danych w SQL Server 2008?
Czy korzystanie z poniższych jest ryzykowne?
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
sql-server
shrink
tempdb
Mcol
źródło
źródło
Odpowiedzi:
Najlepszą praktyką jest proaktywne monitorowanie normalnego użytkowania Tempdb i odpowiednie ustawianie rozmiaru. Jeśli jest to jedyny przypadek, w którym Tempdb urósł do takiego rozmiaru i jest to PROD env, zrestartowałbym SQL Server Services podczas cotygodniowej konserwacji. Tam po Tempdb wrócił do skonfigurowanego rozmiaru.
Zmniejszanie pliku jest w porządku, dopóki Tempdb nie jest używany, w przeciwnym razie może to wpłynąć na istniejące transakcje z punktu widzenia wydajności z powodu blokowania i zakleszczeń.
Pamięć podręczna procedury czyszczenia, bufory pamięci podręcznej itp. Będą miały negatywny wpływ na samą wydajność bazy danych, dopóki nie zostaną one ponownie utworzone. Nie zrobiłbym tego na PROD.
Mam nadzieję, że to pomaga!
źródło