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 :

Impact du déclencheur sur la base tempdb


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut Impact du déclencheur sur la base tempdb
    bonjour a tous

    Suite a un état de saturation que j'aurai sur mes partitions data et suite au augmentation du taille de ma database "insertion des data de type image" j'utilise un déclencheur DML qui permet de me faire une suppression sur les données qui sont anciennes de plus qu'un mois pour cela j'utilise ce trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE TRIGGER dbo.SuppressionData 
       ON  dbo.feature 
       AFTER INSERT
    AS 
    BEGIN
     
     
    delete
     
    FROM    Feature
     
    WHERE   Feature.Location_ID in (select location.location_id from location where Location.Inspection_end_time < 
     CONVERT(DATETIME, getdate()-30, 102))
     
     
    delete from location where Location.Inspection_end_time < CONVERT(DATETIME, getdate()-30, 102)
    	SET NOCOUNT ON;
     
     
    END
    GO
    En premier lieu est ce que le syntaxe de mon déclencheur est juste ????
    aussi est ce que je suis dans le bon chemin d'analyse si j'utilise ce trigger pour minimiser la taille de la base surtout que la table "Location" est la table le plus volumineux
    Est ce que je doit faire un DBCC shrinkdatbase en parralléle avec le déclencheur lancer sur ma base pour gagner d'espace ??? y 'a t'il impact sur la base tempdb???

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Oh que voila un code bien pourri !

    Voici une correction....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE TRIGGER dbo.SuppressionData 
       ON  dbo.feature 
       AFTER INSERT
    AS 
    BEGIN
     
    SET NOCOUNT ON;
     
    DELETE FROM F
    FROM   dbo.Feature AS F
           INNER JOIN location AS L
    	         ON F.Location_ID = L.location_id
    WHERE  L.Inspection_end_time < DATEADD(day, -30, getdate());
     
    DELETE FROM dbo.location 
    WHERE  Inspection_end_time < DATEADD(day, -30, getdate());
     
    END
    GO
    1) utilisez les schémas sQL pour préfixer vos objets
    2) utilisez DATEADD pour ajouter des intervalles (ici nombre de jours à vos dates)
    3) utilisez des alias pour vos tables en jointure
    4) placez le SEt NOCOUNT ON en première instruction
    5) évitez le IN lorsque l'on peut faire une jointure
    6) et le pire... une date étant un type de données, le convertir avec convert en chaine est absurde car il devra être reconvertit en date implicitement, donc deux conversions inutiles...

    Bref, formez-vous au langage SQL. Mon site web, comme mon livre peut vous être utile !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Oh que voila un code bien pourri !

    Voici une correction....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE TRIGGER dbo.SuppressionData 
       ON  dbo.feature 
       AFTER INSERT
    AS 
    BEGIN
     
    SET NOCOUNT ON;
     
    DELETE FROM F
    FROM   dbo.Feature AS F
           INNER JOIN location AS L
    	         ON F.Location_ID = L.location_id
    WHERE  L.Inspection_end_time < DATEADD(day, -30, getdate());
     
    DELETE FROM dbo.location 
    WHERE  Inspection_end_time < DATEADD(day, -30, getdate());
     
    END
    GO
    A +

    est il nécessaire de faire après un "DBCC shrinckdatbase" pour gagner d'espace physique car ce ci c'est le but
    pour la base il est en mode récupération simple
    autre point y'aura t'il d'impact sur la base tempdb ??? si la base il du grand taille et la command "DBCC shrinckdatbase" prend beaucoup du temps
    et merci pour vos conseil

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    SHRINK DATABASE peut faire gagner de la place au niveau physique, à condition que vos données soient défragmentées.
    Avant il faut donc les défragmenter....

    Et réduire les fichier par un SHRINK est le meilleur moyen de pourrir les performances....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    SHRINK DATABASE peut faire gagner de la place au niveau physique, à condition que vos données soient défragmentées.
    Avant il faut donc les défragmenter....

    Et réduire les fichier par un SHRINK est le meilleur moyen de pourrir les performances....

    A +
    ok merci

    par comptre au moment ou j'ai lancer la Command DBCC SHRINKFILE le log du base tempdb a atteint un état de saturation de 99%

    peut il en parallèle shrinker tempdb ou c'est pas nécessaire je compléter mon travaille et il y 'aura plus d'impact

    pour info j'ai annuler le travaille au moment ou j'ai constaté que le log du tempdb a atteint la valeur 99%

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    En tant que bonne pratique n°1, il faut dimensionner correctement vos espaces de stockages des bases de production et de la tempdb, de manière à avoir :
    • aucune opération de croissance de fichier durant toute la durée d'exploitation de la base
    • suffisamment de place sur les disques pour éviter d'utiliser un SHRINK.


    A lire sur le sujet :
    http://blog.developpez.com/sqlpro/p5..._fichiers_et_t
    http://blog.developpez.com/sqlpro/p8...et_le_stocakge

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre régulier
    Homme Profil pro
    consultant BI
    Inscrit en
    Mai 2011
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suède

    Informations professionnelles :
    Activité : consultant BI
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2011
    Messages : 182
    Points : 95
    Points
    95
    Par défaut
    Afin de minimiser l’impact de la suppression sur le log est il possible d'utiliser dans le code transact du supression l'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WAITFOR DELAY '00: 00: 01 '
    pour arrêter la suppression afin d'assurer en parallèle un backup faite sur le fichier log surtout que mon database est en mode recovry full
    cordialement

Discussions similaires

  1. Déplacer la base TempDB sur un nouveau volume
    Par mb10 dans le forum Administration
    Réponses: 11
    Dernier message: 11/04/2011, 15h18
  2. Impact d'une jointure sur une base de données
    Par Immobilis dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/06/2009, 12h11
  3. Quel impacte des statistiques sur une base?
    Par gold15 dans le forum Administration
    Réponses: 7
    Dernier message: 15/01/2009, 11h47
  4. Migration OS et impact sur la base de donnée oracle
    Par smaildba dans le forum Administration
    Réponses: 1
    Dernier message: 05/11/2008, 13h51
  5. [ASE][12.5.1]probleme sur la base tempdb
    Par dngaya dans le forum Sybase
    Réponses: 2
    Dernier message: 04/01/2006, 16h31

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