Comment fonctionne SQL Server sur la même requête avec ou sans transaction ?
Bonjour à tous
pour ma compréhension j'aurai voulu comprendre ce que faisait exactement SQL Server dans les 2 cas suivants :
1er cas
Code:
delete from nom_table where colonneX="toto"
est-ce qu'il fait une copie des lignes supprimées en mémoire ?
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
Code:
1 2 3
| begin trans
delete from nom_table where colonneX="toto"
commit trans |
sql crée une table temporaire dans la base tempdb avec les lignes ?
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