La tempdb d'un serveur (SQL Server 2008) augmente à 500 Go + plusieurs fois par mois. Est-il possible de savoir quelles instructions SQL ont provoqué ce problème? Le problème n'est généralement pas causé par create table #temp...; insert into #temp...
ou select ... into #temp...
mais par des jointures complexes.
La taille initiale de certains fichiers tempdb est également automatiquement définie à des valeurs beaucoup plus importantes à chaque fois. Comment l'empêcher?
Parfois, les plans mis en cache empêchent le redimensionnement / la réduction des fichiers. Comment trouver lequel détient le tempdb?
sql-server
sql-server-2008
tempdb
u23432534
la source
la source
Réponses:
Il existe trois DMV que vous pouvez utiliser pour suivre l'utilisation de tempdb:
Les deux premiers vous permettront de suivre les allocations au niveau de la requête et de la session. Le troisième suit les allocations entre le magasin de versions, l'utilisateur et les objets internes.
L'exemple de requête suivant vous donnera des allocations par session:
Si vous souhaitez suivre l'utilisation sur une période de temps, envisagez de collecter des données avec sp_whoisactive , comme l'a démontré Kendra Little .
la source
[SPACE Allocated FOR USER Objects (in KB)]
et[SPACE Deallocated FOR USER Objects (in KB)]
l'espace réellement occupé de la session?Il peut y avoir différentes sources de problème:
SORT_IN_TEMPDB = ON
la source