tables temporaires toujours est créé dans tempdb. Cependant, il n'est pas nécessaire que la taille de TempDb soit uniquement due aux tables temporaires. Tempdb est utilisé de différentes façons
- objets internes (Trier & bobine, CTE, Reconstruire l'index, jointure de hachage etc.)
- objets utilisateur (table temporaire, les variables de table)
- magasin version (APRÈS/INSTEAD OF déclenche, MARS)
alors, comme il est clair qu'il est d'être utilisé dans diverses opérations SQL pour que leur taille peut se développer en raison d'autres raisons aussi
Vous pouvez vérifier wh à est à l'origine TEMPDB croître sa taille avec ci-dessous requête
SELECT
SUM (user_object_reserved_page_count)*8 as usr_obj_kb,
SUM (internal_object_reserved_page_count)*8 as internal_obj_kb,
SUM (version_store_reserved_page_count)*8 as version_store_kb,
SUM (unallocated_extent_page_count)*8 as freespace_kb,
SUM (mixed_extent_page_count)*8 as mixedextent_kb
FROM sys.dm_db_file_space_usage
si ci-dessus montre la requête,
- Un plus grand nombre d'objets utilisateur, cela signifie qu'il ya plus d'utilisation des tables temporaires, curseurs ou variables temporaires
- Un nombre plus élevé d'objets internes indique que le plan de requête utilise beaucoup de base de données. Ex: tri, groupe par etc.
- Augmentation du nombre de magasins de version montre longue transaction en cours d'exécution ou le débit élevé de transactions
basé sur ce que vous pouvez configurer la taille du fichier tempdb. J'ai récemment écrit un article sur les meilleures pratiques de configuration de TempDB. Vous pouvez lire cela here
Merci pour l'info détaillée Anuj, c'était vraiment instructif. La temp db dans mon cas grandissait en cours d'exécution d'un script qui avait une instruction join avec une table où il y avait des entrées en double. Il doit avoir augmenté le nombre d'objets internes que vous avez mentionnés. – pso