Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2010, 10h00   #1
Invité de passage
 
Homme
Administrateur de base de données
Inscription : octobre 2002
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : octobre 2002
Messages : 31
Points : 3
Points : 3
Par défaut 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.
Troyan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 12h31   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 932
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 932
Points : 17 736
Points : 17 736
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h17.


 
 
 
 
Partenaires

Hébergement Web