Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
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 13/01/2011, 10h47   #1
Invité régulier
 
Inscription : décembre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 25
Points : 6
Points : 6
Par défaut réduire la taille du log de la BDD templog.ldf

Bonjour à tous, merci de prendre le temps de m'aider à résoudre mon problème
(mon problème est dans le cadre pro)

J'ai un système Windows serveur 2003 avec MSSQL 2003.

Le système développé est entièrement fonctionnel depuis maintenant près de 8 mois et récemment le client me tel en se plaignant de lenteur du système.

Après diagnostique voila les conclusion :

Espace disque C: < 5Mo
source du problème fichier « C:\ Program Files\Microsoft SQL Server\MSSQL$SHAREPOINT\Data\ templog.ldf » = 95Go

Je n'ai pas de besoin direct de ce fichier log ... Apparement il est réinitialisé à chaque redémarrage du serveur (taille = 5Mo)

Le redémarrage ma permis de pallier temporairement au problème mais bon, dans 8 mois on me rappellera encore et puis c pas propre ...

bref Sauriez vous quelles solutions seraient applicable pour résoudre cette situation ?

Merci à vous
The_macrafT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 11h47   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 665
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 665
Points : 8 707
Points : 8 707
Bonjour,

Vous pouvez proposer de déplacer les fichiers de TempDB vers d'autres disques à l'aide de l'instruction suivante suivie d'un redémarrage :

Code :
1
2
3
4
5
6
7
8
9
USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'X:\tempdb.mdf')
GO
 
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'Y:\tempdb.ldf')
GO
Pour de meilleures performances, si cela vous est possible, essayez de dédier un disque à chacun de ces fichiers.
Veillez également à séparer les fichiers de données des fichiers des journaux de transactions des bases de données héberges par l'instance en question.

Essayez également de voir quelles sont les requêtes qui ont recours à l'utilisation de TempDB (utilisation de variables de type TABLE, tables temporaires, tris (DISTINCT ou UNION sans ALL, GROUP BY, tables de hachage, réindexations, ...)

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/01/2011, 12h42   #3
Invité régulier
 
Inscription : décembre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 25
Points : 6
Points : 6
Merci pour tes conseils.

Grand merci pour le code aussi jvais pouvoir limiter la charge sur le disque C:

C'est vrais que j'ai d'autres lecteurs à grosse capacité mais cela n'empêcherais pas que cette base grossisse ?
Pensez-vous qu'un plan de maintenance avec un shrink de la bdd réduirait la taille de celle-ci ?

J'ai énormément de requette de type "join, table, order, etc ..." car je fais beaucoup de reporting horaire, journalier,mensuel etc ... sur plus de 50 unitées différentes (soit environ 50 rapports par heures contenant souvent plusieurs des ces fonctions) et pas mal de fonction d'inetgration de mesure etc ...

Donc j'en suis très dépendant ...

Donc le déplacement des bases pourrais convenir, mais je ne pense pas que se soit une finalité en soit. Pouvons nous limiter la taille de cette base ? ou le plan de maintenance est possible ?

Merci
The_macrafT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 13h45   #4
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Un petit complément aux propos de Elsuket :

- Dédier des disques ou une architecture disque rapide pour tempdb. Cette base est surtout sollicité en écriture.

Si votre base tempdb grossit, c'est peut être normal mais vous pouvez utiliser les vues systèmes appropriés et compteurs qui permettront de voir ce qui utilise cette base.

Citation:
Pensez-vous qu'un plan de maintenance avec un shrink de la bdd réduirait la taille de celle-ci ?
L'utilisation de la commande SHRINK est à proscrire surtout si vous le faites de manière récurrente. C'est une opération qui doit respecter exceptionnelle car elle a des conséquence sur les performances de votre base.

Citation:
J'ai énormément de requette de type "join, table, order, etc ..." car je fais beaucoup de reporting horaire, journalier,mensuel etc ... sur plus de 50 unitées différentes (soit environ 50 rapports par heures contenant souvent plusieurs des ces fonctions) et pas mal de fonction d'inetgration de mesure etc ...

Donc j'en suis très dépendant ...

Donc le déplacement des bases pourrais convenir, mais je ne pense pas que se soit une finalité en soit. Pouvons nous limiter la taille de cette base ? ou le plan de maintenance est possible ?

Merci
Encore une fois voyez les requêtes qui utilisent le plus tempdb. Vu que vous êtes très dépend de votre activité ... il faudra commencer par optimiser en amont ... c'est à dire vos requêtes .. L'expansion de tempdb n'est que la conséquence du problème (si problème il y a ..)

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2011, 14h00   #5
Invité régulier
 
Inscription : décembre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 25
Points : 6
Points : 6
Citation:
L'utilisation de la commande SHRINK est à proscrire surtout si vous le faites de manière récurrente. C'est une opération qui doit respecter exceptionnelle car elle a des conséquence sur les performances de votre base.
En fait je veux la faire de manière récurante mais Tou les 6 mois par exemples.


Alors j'ai réussi à mettre les deux bases sur deux hdd différents nickel et sa à l'aire de fonctionner

Citation:
Encore une fois voyez les requêtes qui utilisent le plus tempdb. Vu que vous êtes très dépend de votre activité ... il faudra commencer par optimiser en amont ... c'est à dire vos requêtes ..
bien en fait c'est un soft industriel qui me permet de faire du reporting et certains des code sont "fermée". sinon comme indiqué il m'arrive de faire des "order by" et autre code de se genre.

(je comprend mieux l'utilité de tempdb.mdf maintenant :p )

donc sa va être très du de modifier (optimiser?) le code...

J'aurais vraiment besoin de savoir si il est possible de diminuer (pendant l'exploitation) la taille du fichier tempdb.ldf (sachant que la taille de tempdb.mdf reste accéptable)

mercii
The_macrafT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 16h32   #6
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
oui il est possible de faire un truncate de votre fichier log en exploitation ..

Cependant si votre fichier journal est amené à regrossir à nouveau vous allez crééer de la fragmentation physique de votre fichier ... Il vaut mieux réserver une bonne fois pour toute l'espace nécessaire que de tenter de réduire même tous les 6 mois le journal. En plus celui-ci se vide automatiquement car le mode de récupération de cette base est en SIMPLE.

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 13h48   #7
Invité régulier
 
Inscription : décembre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 25
Points : 6
Points : 6
Citation:
Envoyé par mikedavem Voir le message
En plus celui-ci se vide automatiquement car le mode de récupération de cette base est en SIMPLE.
Quand dis qu'elle se vide automatiquement tu veux dire au redémarrage du serveur ?
The_macrafT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2011, 14h08   #8
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Elle se vide à chaque fin de transaction.
Attention, les informations se vide mais l'espace disque réservé, lui, reste inchangé. C'est le contenu qui est effacer, non le contenant.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 09h42   #9
Invité régulier
 
Inscription : décembre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 25
Points : 6
Points : 6
Citation:
Envoyé par Jinroh77 Voir le message
Elle se vide à chaque fin de transaction.
Attention, les informations se vide mais l'espace disque réservé, lui, reste inchangé. C'est le contenu qui est effacer, non le contenant.
Merci

Comment dois-je faire alors pour adapter le contenant au contenu lol
The_macrafT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 09h53   #10
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Il n'y a aucun intérêt à cela.
Pour comprendre,
Dans tous les composants participant au temps d'exécution d'un traitement sur un ordinateur en général, les accès disques sont ce qu'il y a de plus lent. le facteur entre en accès disque et mémoire est de 1000 voir plus.

Or si votre fichier .ldf, dont la base est en mode de récupération simple, atteint un jour la taille de 10Go, c'est qu'une transaction unique a nécessitée cette espace.

Au moment de ce besoin, le moteur de base de données a demandé au système de lui allouer ces 10Go d'espace sur le disque. Si on rajoute le fait que votre base n'est pas forcément bien paramétrée, il a demandé cela par palier de 10mo...
Chaque allocation d'espace disque coûte énormément de temps au moteur de base de données.

Si à la fin de l'opération, vous réduisez la taille physique de votre fichier à ce qu'il reste dedans (c'est à dire rien), à la prochaine opération nécessitant autant d'espace, le moteur va re-perdre ce temps très important pour re-allouer l'espace disque.
Par contre, si le fichier n'est pas réduit (commande SHRINK), le contenant représentant toujours 10go, la transaction suivante qui aura besoin de 1àgo d'espace n'aura pas à perdre le temps de réallouer l'espace sur le disque, il sera déjà réservé sur le disque. d'où un gain important de performance.


Enfin, comme l'explique mikedavem il faut se poser la question de l'identification de la transaction qui a fait autant augmenter la taille de votre fichier.


Explication un peu longue mais que j'espère claire ?
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 22h30   #11
Membre du Club
 
Homme Patrick LAMBIN
Retraité
Inscription : décembre 2010
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme Patrick LAMBIN
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : décembre 2010
Messages : 23
Points : 41
Points : 41
Par défaut Base tempdb

Bonjour,

Si j'ai bien compris cette discussion, elle concerne la place prise par le fichier log de la base tempdb de l'instance SQL server utilisée par SharePoint.
Serait-il possible de redémarrer cette instance ?
Si j'ai bien compris les explications données par Kaleen Delaney dans son livre Inside Microsof SQL Server 2005 : the Storage Engine ( pages 135/136 ), la base tempdb est automatiquement recrée à la taille de la base Model quand on redémarre l'instance SharePoint. De plus, celà permettrait d'utiliser un nouveau fichier log pour l'instance ( ce fichier log devient illisible quand il est trop grand ).
J'ai souvent vu des gens se plaindre de la place prise par les fichiers .ldf de tempdb et des fichiers log de l'instance parce qu'ils n'avaient jamais redémarré leur instance depuis plus d'un an.La seule solution que je connaisse est le redémarrage du service SQL Server associé à l'instance.

Bonne journée
Papy Normand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 09h48   #12
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Citation:
Envoyé par Papy Normand Voir le message
Bonjour,

Si j'ai bien compris cette discussion, elle concerne la place prise par le fichier log de la base tempdb de l'instance SQL server utilisée par SharePoint.
Serait-il possible de redémarrer cette instance ?
Si j'ai bien compris les explications données par Kaleen Delaney dans son livre Inside Microsof SQL Server 2005 : the Storage Engine ( pages 135/136 ), la base tempdb est automatiquement recrée à la taille de la base Model quand on redémarre l'instance SharePoint. De plus, celà permettrait d'utiliser un nouveau fichier log pour l'instance ( ce fichier log devient illisible quand il est trop grand ).
J'ai souvent vu des gens se plaindre de la place prise par les fichiers .ldf de tempdb et des fichiers log de l'instance parce qu'ils n'avaient jamais redémarré leur instance depuis plus d'un an.La seule solution que je connaisse est le redémarrage du service SQL Server associé à l'instance.

Bonne journée
En redémarrant une instance SQL vous ne solutionnez absolument pas le problème.
Vous réalisez une opération pompier sans prendre en considération tous les effets indésirables.

Redémarrer une instance SQL provoque beaucoup plus de choses que vous ne semblez imaginer.
Alors que si l'on fait en sorte que la tempDB reste dans une taille correcte ou au pire de l'opération pompier, on réduit physiquement la taille du fichier de log, les effets indésirables ne seront pas du tout les mêmes.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 13h18   #13
Membre chevronné
 
David BAFFALEUF
Inscription : février 2008
Messages : 612
Détails du profil
Informations personnelles :
Nom : David BAFFALEUF
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 612
Points : 744
Points : 744
Citation:
Envoyé par Papy Normand Voir le message
la base tempdb est automatiquement recrée à la taille de la base Model quand on redémarre l'instance SharePoint. De plus, celà permettrait d'utiliser un nouveau fichier log pour l'instance ( ce fichier log devient illisible quand il est trop grand ).
J'ai souvent vu des gens se plaindre de la place prise par les fichiers .ldf de tempdb et des fichiers log de l'instance parce qu'ils n'avaient jamais redémarré leur instance depuis plus d'un an. La seule solution que je connaisse est le redémarrage du service SQL Server associé à l'instance.
Bonne journée
tempdb est recréé à sa taille initiale par défaut (8Mb). Model fait 2Mb par défaut. Model ne sert qu'à importer des objets systèmes comme dans toute création de base, et notamment lors de la séquence de startup pour tempdb. Et pour recycler le fichier ERRORLOG, tu n'es pas obligé de redémarrer l'instance (sp_cycle_errorlog).

Le contrôle de la taille des journaux de transactions sur disque ne dépend que du mode de récupération des transactions de la base concernée, et de l'espace nécessaire pour jouer les transactions, sur tempdb comme sur les autres bases. Il faut identifier quelles transactions sont ouvertes dans tempdb et pourquoi elles consomment autant d'espace. Redémarrer une instance devrait être la dernière option à considérer (on repart avec un buffer pool vide, il faut recompiler tous les plans et tous les compteurs exposés par les DMV sont aussi flushés).
__________________
David B.
dbaffaleuf 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 16h39.


 
 
 
 
Partenaires

Hébergement Web