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

MS SQL Server Discussion :

[SQL 2K8] Saturation du journal de transaction pendant un delete


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut [SQL 2K8] Saturation du journal de transaction pendant un delete
    Bonjour,
    Sur une base de dev utilisée pour de l'alimentation de cubes Olap, je cherche à vider une table.
    Cette table comporte, entre autre, un champ qui me permet via une jointure de filtrer une partie de celle-ci.

    Je cherche donc à supprimer dans cette table une partie des lignes ce qui sature le journal de transactions.

    Quelques détails :
    La base fait 25 Go avec 5Go de journaux, en mode simple.
    La table contient plus de 5 millions de lignes et je cherche en supprimer 99%.
    Je ne peux pas utiliser de truncate et boucler sur un nombre de ligne, pour supprimer par partie, me dérange particulièrement.
    J'exécute via un package SSIS à plusieurs moments de mon alimentation sur des tables différentes.
    J'ai un index cluster sur le champ utilisé pour ma jointure.
    Un sp_spaceused sur la table me renvois 817 Mo de data et 5 Mo d'index.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    delete Ir.FtPv 
    from Common.DimSource src
    JOIN Ir.FtPv ft
    	ON ft.SourceId = src.SourceId
    where
    	src.Code = 'S'
    Utilisant un plan faisant un Clustered Index Seek sur ma table de faits, un nested loops avec la table DimSource puis il termine par un Clustered Index Delete.


    J'ai pour le moment du mal à convaincre les DBA d'augmenter la taille du journal pour cette base de dev et à part faire un truncate manuel avant mon alimentation, je n'ai pas beaucoup de solution pour le moment

  2. #2
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Pas d'autres idées d'optimisation ou autre ?

  3. #3
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 450
    Par défaut
    Bonjour,

    Quel est ton mode de récupération pour la base concernée ?

    ++

  4. #4
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Désolé, oublié de préciser mais sur la dev comme l'homolo nous sommes en simple.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Dans ce cas c'est que votre journal n'est pas configuré pour grossir automatiquement.
    Vous pouvez le voir dans les propriétés de la base de données, ou en interrogeant la table sys.database_files, et en regardant la colonne growth, éventuellement en combinaison avec is_percent_growth.
    Quelles valeurs avez-vous ?

    @++

  6. #6
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 450
    Par défaut
    D'autres pistes :

    Est ce qu'il y a d'autre index autre que l'index cluster sur la table ?
    Une désactivation de ceux-ci pourrait limiter la quantité d'informations dans le journal.

    As tu pensé à inverser la logique de mise à jour de ta table ?
    Tu dis que tu as environ 99% de données à supprimer. Alors dans ce cas tu pourrais copier les 1% de données non supprimés dans une table, d'opérer ensuite un TRUNCATE (journalisation mimime) et enfin de restaurer les données sauvegardés dans la table ...

    ++

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

Discussions similaires

  1. editer le journal de transaction sql 2000
    Par kimo0147 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2006, 10h37
  2. [SQL Server 2000] vider journal de transactions
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2006, 19h28
  3. [SQL Server ] Récupération journal de transactions
    Par grellierj dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/02/2006, 18h31
  4. Réponses: 4
    Dernier message: 06/01/2006, 17h37
  5. Réduction du Journal de transactions SQL Server
    Par Aki dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/10/2004, 09h15

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