-
Table En Ram
Bonjour,
je suis sous SQL 2005 & 2008.
Je cherche à comprendre une chose...
voila lors d'une premiere requete sur une grosse table 22millions de lignes dans le but de faire des comptages.
la requete prends ~28s toutes les requetes qui suivent avec des parametres differents mettent globalement moins de 2 ~3s.
j'en deduit qu'il place la table en RAM.
alors j'ai une question comment forcer SQL-server à placer et surtout garder une table en RAM ?
Car au bout d'un moment elle reprends ces 28s ?
et nous aimerions dedier un serveur à ce type d'activites.
Merci par avance.
Ch.
-
Cela est impossible, car votre RAM n'étant pas extensible à l'infini, si vous pouviez forcer la mise en RAM, cela serait aux détriment de toutes les autres données. Par exemple si votre table était aussi volumineuse que la RAM alors aucune autre table ne pourrait monter en mémoire et plus aucune requête sur ces tables là ne serait passible. Car un SGBDR fonctionne exclusivement en RAM, jamais sur le disque !
Pour cela le moteur de stockage monte en RAM les tables au fur à mesure des besoins du moteur relationnel.
Afin d'optimiser le stockage il utilise un algorithme de type LRU : Last recent Use. EN gros, plus j'ai récemment utilisé une donné, plus elle a de chances d'être réutilisée rapidement. (ou mettez-vous vos chaussettes et vos combinaisons de ski ?
Si vous voulez que cette table particulière soit toujours présente en RAM, augmentez la RAM !
Un SGBDR à besoin de beaucoup de RAM !
A +