Tables temporaires et persistance

Certaines personnes ont une conception assez originale de ce qu’est une table temporaire. Ce gens là pensent naïvement qu’une table temporaire n’existe qu’en RAM… C’est bien évidemment totalement faux et cela pour deux raisons.
1) quelque soit sa forme, une table est une table et est traité de la même manière qu’elle soit temporaire ou pas
2) afin d’assurer la consistance transactionnelle (propriété ACID des SGBDR), il est nécessaire d’écrire les données sur un support Durable

Dans un récent post, un internaute avait du mal à croire que les tables temporaires était réellement écrites sur le disque…
Je lui ais alors fait la remarque suivante :
Une table temporaire étant une table, elle est instanciée en tant que table et bénéficie des mêmes mécanismes de persistance que n’importe quelle autre table.
Comme une table temporaire peut perdurez tant que la session est vivante, imaginez ce qui se passerait si les tables temporaires n’existaient qu’en RAM… Prenons un utilisateur qui se connecterait à 8h du matin pour terminer sa session (déconnexion) à 18h après avoir créé 2 500 tables temporaires de 500 000 lignes chacune… A votre avis dans quel état serait la RAM ???

Dans SQL Server une table temporaire locale ou globale, comme une variable table et comme les pseudos tables inserted et deleted des triggers et des clauses OUTPUT sont des objets réellement écrits sur le disque…
Il n’y a rien de surprenant là dedans. Il n’ya pas de limite de volume d’une table même temporaire… Que se passerait-il si la RAM du serveur était de 2 Go avec une table temporaire nécessitant de stocker 600 Go de données ?

***
Fr̩d̩ric BROUARD РSQLpro РMVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits – optimisation – tuning – formation

Laisser un commentaire