Pour sélectionner des informations relatives à une liste de centaines d'ID ... plutôt que de faire une énorme déclaration, je crée une table temporaire, y insère les ID, la joint avec une table pour sélectionner les lignes correspondant aux identifiants, puis supprime la table de temp. Il s'agit donc essentiellement d'une opération de lecture, sans modifications permanentes apportées aux tables de base de données persistantes.Dois-je valider ou annuler une transaction qui crée une table temporaire, la lit, puis la supprime?
Je fais ceci dans une transaction, pour m'assurer que la table temporaire est supprimée quand j'ai fini. Ma question est la suivante: que se passe-t-il lorsque je commets une telle transaction par rapport à une transaction? En termes de performances ... le moteur de base de données doit-il faire plus de travail pour annuler la transaction en la validant? Y at-il même une différence puisque les seules modifications sont faites à une table de temp?
question connexe, mais ne répond pas à mon cas spécifique impliquant des tables temporaires: Should I commit or rollback a read transaction?
EDIT (clarification de la question):
Pas la recherche de conseils à point de commettre/rollback. La transaction est absolument nécessaire. Supposons qu'aucune erreur ne se produit. Supposons que j'ai créé une table temporaire, supposons que je sais que l'écriture réelle sur tempdb s'est produite, supposons que j'effectue des opérations en lecture seule (sélection) dans la transaction et supposons que j'émets une instruction delete sur la table temporaire. Après tout ça ... qui est moins cher, commit ou rollback, et pourquoi? Quel autre travail le moteur db peut-il faire à THAT POINT pour un commit contre une restauration, basé sur ce scénario spécifique impliquant des tables temporaires et des opérations en lecture seule?
Je ne pose pas vraiment de questions sur les performances de l'emballage dans une transaction. La connexion est transmise successivement à plusieurs fonctions de l'API de base de données et utilise un nom/une convention de table temporaire commun, de sorte que la transaction garantissant la suppression de la table temporaire est nécessaire. Ce qui m'intéresse, c'est l'effet de l'engagement de cette transaction ou de l'annuler. – Triynko
@Triynko - En quoi êtes-vous curieux de l'effet? L'accessibilité à la table temporaire à partir d'un autre code? – Thomas
@Thomas - Je pose des questions sur la performance de l'engagement vs la rétrocession de la transaction. Ce n'est vraiment pas intuitif, parce que le retour semble impliquer que le travail serait fait, mais si une simple transaction non validée est annulée ... le travail peut simplement être supprimé de la mémoire et aucun travail pour "appliquer" les changements ne serait enregistré , comme la mise à jour des statistiques de base de données C'est difficile à dire, et donc je cherche vraiment quelqu'un qui sait ce qui peut se passer dans SQL Server sous le capot pendant les rollbacks et s'engage dans ce scénario particulier. – Triynko