IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Tempdb et son impact sur une BDD [2008R2]


Sujet :

Administration SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

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

    Informations forums :
    Inscription : août 2014
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Tempdb et son impact sur une BDD
    bonjour,
    pourrais-je avoir des éclairssicement sur Tempdb et son influence sur l'optimisation d'une BDD sql server 2008 ?

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    février 2010
    Messages
    4 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 4 058
    Points : 7 278
    Points
    7 278
    Billets dans le blog
    1
    Par défaut
    La base de données Tempdb est utilisée par SQL Server pour stocker, de façon temporaire, les données en cours de traitement.
    Par exemple, sur de grosses requêtes, les jeux de données intermédiaires, car ne tenant pas en mémoire.

    C'est par conséquent une base de données qui est extrêmement sollicitée, et dont les bonnes performances sont vitales pour l'état général du serveur.

    Je ne suis pas DBA, et il y a certainement bien d'autres choses à dire, mais voici ce que j'ai pu lire ça et là :

    1/ La base tempdb est détruite et recréée à chaque redémarrage de SQL Server. Sa taille par défaut est de 5 Mo, avec une croissance de 10%. Je vous laisse imaginer les nombre de resize des fichiers qui sont nécessaires pour stocker un résultat intermédiaire de 500 Mo.
    => Par conséquent, la première chose à faire, c'est de modifier la taille initiale de ses fichiers de données, pour allouer la taille maximale dès le départ (si après 48h d'utilisation elle fait 500 Mo, alors mettez cette valeur en taille initiale).

    2/ La base tempdb stocke des données volatiles pendant les traitements. Par conséquent, il y a des lectures/écritures intensives dedans durant les traitements importants, qui sollicitent aussi fortement les fichiers de données des autres bases (lectures, mises à jour), mais aussi les journaux des transactions
    => Si possible tempdb doit être stockée sur un disque qui ne contient ni fichier de base de données, ni journal des transactions

    3/ La base tempdb est à SQL Server un peu ce que la mémoire virtuelle est à windows.
    => Ces deux fichiers ne doivent absolument pas être sur le même disque dur physique, puisqu'en cas d'utilisation intensive de l'un, l'utilisation du second sera fortement dégradée, ce qui se traduira par des performances catastrophiques.

    4/ La base tempdb contient, entre autres, les jeu de données des sous-select, les tables temporaires, les curseurs, etc.
    => Veillez le plus possible à éviter d'utiliser ces objets, pour ne faire que des requêtes ensemblistes pure, si possible avec des jointures simples : cela permet de travailler avec moins de données en mémoire (pointeurs sur les index plutôt que des jeux de données) et donc alléger la charge de tempdb

    Voilà, je laisse la parole aux experts, qui auront certaienement d'autres choses plus précises à dire à ce propos.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    août 2005
    Messages
    5 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : août 2005
    Messages : 5 424
    Points : 12 775
    Points
    12 775
    Par défaut
    Moi j'aurais plutôt tourner la question dans l'autre sens : Impact d'une BDD sur la base de données tempdb ? .. c'est en général plus dans ce sens là sans entrer dans le détail

    A+

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

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

    Informations forums :
    Inscription : août 2014
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Merci StringBuilder pour ces informations qui sont bien précises

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2003
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2003
    Messages : 731
    Points : 1 622
    Points
    1 622
    Billets dans le blog
    8
    Par défaut
    Depuis SQL Server 2005, la base tempdb joue un rôle important. Ce rôle ne cesse d’être promu au fil des nouvelles versions de SQL Server.
    Donc, en complément de ce qui a été dit par StringBuilder, et pour aller aussi dans le sens de la question telle qu’elle est formulée, à juste titre, par mikedavem, j’ajouterai ceci :
    La base tempdb est très sollicitée dans les situations, liste non exhaustive, suivantes :
    - Les opérations DBCC (Exemple DBCC CHECKDB),
    - La reconstruction d’index effectuée avec l’option SORT_IN_TEMPDB et/ou ONLINE,
    - Utilisation du niveau d'isolation basé sur le versioning de ligne (READ_COMMITTED_SNAPSHOT ou ALLOW_SNAPSHOT_ISOLATION),
    - Mise en œuvre de la CTE. En effet, une expression de table commune peut être considérée comme un ensemble de résultats provisoire défini dans l'étendue d'exécution d'une seule instruction SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW. Lorsque le plan de requête d'une requête d'expression de table commune utilise un opérateur Spool pour enregistrer des résultats de requêtes intermédiaires, le moteur de base de données crée une table de travail dans tempdb pour prendre en charge cette opération.

    A+
    "Une idée mal écrite est une idée fausse !"
    http://hamid-mira.blogspot.com

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    février 2008
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 758
    Points : 1 069
    Points
    1 069
    Par défaut
    Et dans les faits même bien plus que ça. Chaque nouvelle fonctionnalité quasiment y va de sa petite worktable, donc la partie internal allocation ne cesse de grossir au gré des versions.

    Pour info le webcast guss de l'année dernière sur tempdb:

    David B.

  7. #7
    Membre à l'essai
    Inscrit en
    avril 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Une des "Best practices" concernant TempDb est comme l'a dit "StringBuilder", que les fichiers de TempDb soient stockées sur un/des disques séparés des autres BDD, et qu'elles soient "éclatéesé sur plusieurs fichiers (en fonction du nombre de CPU).
    Il faut également penser a activer le Traceflag -1118
    http://support.microsoft.com/kb/2154845/fr
    et http://support.microsoft.com/kb/328551/fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/02/2007, 02h50
  2. Vérification de données sur une BDD
    Par dj_cue dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/02/2007, 13h08
  3. recuperation d'un login/mdp sur une BDD
    Par bonjour69 dans le forum C++
    Réponses: 5
    Dernier message: 12/11/2006, 17h30
  4. Requête sur une bdd HF sans WinDev
    Par moabomotal dans le forum WinDev
    Réponses: 4
    Dernier message: 08/08/2006, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo