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

SSIS Discussion :

[SSIS] [2K5] Optimisation de l'écriture dans le journal de transaction


Sujet :

SSIS

  1. #1
    Membre régulier
    Avatar de gassisprog
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Points : 86
    Points
    86
    Par défaut [SSIS] [2K5] Optimisation de l'écriture dans le journal de transaction
    Bonjour,

    J'ai une Tâche d'exécution de requête SQL qui effectue un DELETE paramétré sur une table volumineuse.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM MA_TABLE
    WHERE <CONDITION>

    Cette requête supprime plus qu'un million de ligne d'où une inflation énorme du fichier journal.

    Afin d'optimiser ce traitement, j'ai pensé à faite une BEGIN TRAN -- COMMIT TRAN comme suit :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN TRAN T1;
    DELETE FROM MA_TABLE
    WHERE <CONDITION>
    COMMIT TRAN T1;

    Est ce que ça pourra diminuer cette inflation ?

    Sinon, je prends toute autre proposition.

    Merci d'avance

  2. #2
    Membre chevronné 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 : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    J'avais eu ce problème il y a quelques temps et SQLPro m'avait donné l'idée suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WHILE EXISTS(SELECT * FROM MaTable WHERE ???)
    BEGIN
       DELETE TOP 100000 FROM MaTable
       WHERE ???;
       IF @@ROWCOUNT = 0 BREAK;
       CHECKPOINT;
    END;
    Le TOP xxx dans un delete, extra
    Alexandre Chemla - Consultant MS BI chez Masao

  3. #3
    Membre régulier
    Avatar de gassisprog
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Points : 86
    Points
    86
    Par défaut
    Merci bien,

    En effet, j'ai pensé à mettre un DELETE TOP (10) PERCENT dans un Loop Container (avec un While).

    Mais je pense que votre solution est plus convenable puisque je n'aurai pas besoin d'un autre composant outre que la tâche d'exéuction de requête SQL

  4. #4
    Membre chevronné 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 : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Pour avoir testé sur des tables très volumineuses, ça fonctionne plutôt très bien.
    Une tâche de script et c'est terminé

    Bonne utilisation.
    Alexandre Chemla - Consultant MS BI chez Masao

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

Discussions similaires

  1. Annuler l'écriture dans le journal de transaction
    Par AJemni dans le forum Administration
    Réponses: 12
    Dernier message: 16/04/2010, 15h50
  2. Réponses: 4
    Dernier message: 16/09/2008, 16h13
  3. Réponses: 0
    Dernier message: 16/06/2008, 11h28
  4. Réponses: 2
    Dernier message: 04/06/2008, 14h24
  5. Réponses: 1
    Dernier message: 25/03/2008, 21h11

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