11
votes

Variables de table créées et tenues en mémoire ou dans TEMPDB?

sont des variables de table créées en mémoire ou dans TEMPDB? Pareil pour Tables Temps courtes?


1 commentaires

dba.stackexchange.com/questions/16385/...


3 Réponses :


13
votes

une table TEMP sera créé dans TEMPDB et vous pouvez facilement vérifier en interrogeant la table SysObjects dans TEMPDB

Exemple P>

    declare @v table(id int) 
select top 1 * from tempdb.sys.sysobjects
where name like '#%'
and name not like '%[_]%'
order by crdate desc
select * from @v


0 commentaires

3
votes

Je crois comprendre que, au minimum, la structure d'une variable de table est toujours créée dans TEMPDB. Ensuite, comme pointé par SQLMENACE < / a>, les données peuvent ou non se répandues.

par Cet article de la base de connaissances Microsoft :

Une variable de table n'est pas une mémoire uniquement structure. Parce qu'une variable de table pourrait contenir plus de données que possible dans mémoire, il doit avoir une place sur disque pour stocker des données. Les variables de table sont créé dans la base de données TEMPDB similaire aux tables temporaires. Si la mémoire est disponible, les deux variables de table et Les tables temporaires sont créées et traitée en mémoire (données cache).


1 commentaires

Les données sont toujours conservées sur des pages de données appartenant à TEMPDB . Celles-ci peuvent être écrites ou non écrites au disque et si elles sont écrites dans le disque, les pages peuvent toujours être dans le pool tampon. Certaines démonstrations pertinentes à la fin de ma réponse ici



2
votes

dans MS SQL 2014 a été introduit de type spécial de variables de table "Variables de table optimisées de la mémoire". Et ils n'utilisent pas templdb.

voir https://msdn.microsoft.com/en-us/library /dn535766.aspx


0 commentaires