Best practice per ridurre Tempdb in un ambiente di produzione


24

Quali sono le migliori pratiche da utilizzare per ridurre il db temporaneo in SQL Server 2008?

È rischioso utilizzare quanto segue?

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

La migliore pratica è capire cosa lo sta facendo crescere e affrontarlo. Se lo riduci, deve solo crescere di nuovo e questo richiede tempo e IO
Nick.McDermaid

Si, lo so. Ma quando devo, perché è troppo tardi per essere proattivi :) È questa la soluzione migliore?

Mi dispiace non posso aiutarti lì.
Nick.McDermaid,

Risposte:


11

È consigliabile monitorare in modo proattivo il normale utilizzo di Tempdb e impostare le dimensioni di conseguenza. Se questo è un caso unico in cui Tempdb è cresciuto a una tale dimensione ed è un env PROD, vorrei riavviare i servizi di SQL Server durante la manutenzione settimanale. Lì dopo Tempdb sarebbe tornato alla sua dimensione configurata.

Ridurre il file va bene fino a quando Tempdb non viene utilizzato, altrimenti le transazioni esistenti potrebbero essere influenzate dal punto di vista delle prestazioni a causa di blocchi e deadlock.

La cache delle procedure di pulizia, le cache buffer ecc. Avranno un impatto negativo sulle prestazioni del database stesso fino a quando non vengono ricreate. Non lo farei su PROD.

Spero che sia d'aiuto!


Grazie per l'input di dio. È sufficiente verificare con sp_who i processi in tempdb?

1
Non penso che sia un modo affidabile per scoprire se viene utilizzato temp db. Penso che apparirebbe solo se qualcuno sta creando la tabella temporanea direttamente in SSMS. Ma se lo stesso viene fatto a seguito di un'operazione di query a causa di una perdita di memoria, ecc., Non verrà visualizzato in sp_who2. Questa domanda sarebbe infatti una discussione separata. Si prega di crearlo poiché si tratta di una discussione separata. Se la risposta precedente ti ha aiutato, contrassegnala come risposta. Ciò aiuterà gli altri con una situazione simile.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.