Bonjour à tous
pour ma compréhension j'aurai voulu comprendre ce que faisait exactement SQL Server dans les 2 cas suivants :
1er cas
est-ce qu'il fait une copie des lignes supprimées en mémoire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part delete from nom_table where colonneX="toto"
est-ce qu'il crée une table temporaire dans la base tempdb avec les lignes ?
si on annule la requête , que se passe t-il ?
Ce que j'espère avoir compris :
Tant qu'on annule pas la requête , les lignes concernées commencent à être supprimées et on ne pourra plus les récupérer.
Dans ce cas on supprime directement les lignes dans les fichiers physiques de la base
la base tempdb n'est pas utilisée
ou peut-être que sql écrit d'abord dans tempdb et à un moment donné (checkpoint ?) vide la base et supprime les fichier physique
2eme cas
sql crée une table temporaire dans la base tempdb avec les lignes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 begin trans delete from nom_table where colonneX="toto" commit trans
si on fait un rollback , il supprime la table temporaire de tempdb ?
si on fait un commit , il supprime les lignes dans la table , supprime la table temporaire et les lignes dans le fichier data ?
derrière mes incompréhensions / mes doutes , si on exécute les 2 req je constate que la 1ère est plus rapide mais je m'aperçois que je ne sais pas l'expliquer
clairement ...c'est que je n'ai pas tout compris
je comprends bien la différence avec le rôle de la transaction pour conserver une intégrité des données..
ma question porte plus ce qui se passe concrètement derrière
merci d'avance
Partager