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 :

Volumétrie et Tests de Performance [2008]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Alternant Licence Pro BDD
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Alternant Licence Pro BDD
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut Volumétrie et Tests de Performance
    Bonjour à tous,
    Je suis nouveau ici et vous m'excuserai par avance si je ne poste pas au bon endroit.
    Je suis en alternance en licence pro BDD a Annecy, et en entreprise je rencontre un problème.

    J'ai pour mission de faire des insertions en masse sur certaines tables de ma base avec des données provenant de cette même base. Ces données viennent de plusieurs tables et sont nécessaire pour respecter les Foreign-Key. Ce n'est pas grave si les lignes insérées ne sont pas cohérentes c'est seulement pour des tests de performances.

    Je vous demande donc quelle serait la meilleure solution pour y parvenir. (Procédures stockées, Outils spécifiques, ...)

    Dans l'attente de vos réponses,
    Cordialement,

    Loris.

  2. #2
    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
    Tu peux par exemple passer par du code T-SQL (requêtes ou procédures stockées) ou via SSIS également qui est un outil adapté pour cela.
    Après tout dépend ce que tu appelles insertion en masse.

    ++

  3. #3
    Membre régulier
    Homme Profil pro
    Alternant Licence Pro BDD
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Alternant Licence Pro BDD
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut
    Et bien tout dépend des tables, je dois faire des inserts variant entre 20k et 20M de lignes.

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    les performances en mise à jour (les insertions de lignes font partie des mises à jour) reposent sur de multiples facteurs, mais les plus importants sont :
    1) l'ajustement de la RAM
    2) la modélisation de la base (respect des formes normales)
    3) une bonne architecture du stockage
    4) une indexation adéquate
    ...
    cela peut faire varier dans un rapport de 1 à 1 000 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
    Alternant Licence Pro BDD
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Alternant Licence Pro BDD
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Par défaut
    Pour ce qui est des ces 4 points, cela a surement été respecté par les personnes qui ont développé la base.
    L'application est aujourd'hui en phase de test, et ces INSERT ont seulement pour but de voir comment l'application fonctionne avec une base de données semblable à celle qui sera mise en production car la migration n'est pas terminée.
    Mon travail est simplement d'effectuer ces inserts avec la méthode de mon choix. Réalisant déjà des scripts pour l'école et le travail, je souhaite savoir si des outils comme SSIS par exemple peuvent répondre à mes attentes afin de voir des outils nouveau.

    A+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Loris_A Voir le message
    Pour ce qui est des ces 4 points, cela a surement été respecté par les personnes qui ont développé la base.
    Ne jamais rien prendre pour acquis, bien au contraire ! Le doute fait gagner beaucoup de temps.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Loris_A Voir le message
    Pour ce qui est des ces 4 points, cela a surement été respecté par les personnes qui ont développé la base.
    L'application est aujourd'hui en phase de test, et ces INSERT ont seulement pour but de voir comment l'application fonctionne avec une base de données semblable à celle qui sera mise en production car la migration n'est pas terminée.
    Mon travail est simplement d'effectuer ces inserts avec la méthode de mon choix. Réalisant déjà des scripts pour l'école et le travail, je souhaite savoir si des outils comme SSIS par exemple peuvent répondre à mes attentes afin de voir des outils nouveau.

    A+
    Les audits que je pratique et mes interventions en pompier, me montre que c'est très généralement strictement le contraire !

    Les vraies compétences en matières de SGBDR et de DBA SQL Server sont rare et chères... Donc, on s'en passe jusqu'au jour ou tout foire !

    je vous propose 3 requête pour mesurer la qualité de votre système :

    La première regarde si vos bases sont en auto croissance au niveau des fichiers ce qu'il ne faut jamais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT DB_NAME(database_id), 'DANGER : fichier(s) de la base en auto croissance !'
    FROM   sys.master_files
    WHERE  database_id > 4
      AND  name NOT LIKE 'ReportServer%'
      AND  is_percent_growth = 1;
    La seconde (à faire dans le contexte de votre base de production) regarde si vos tables ne sont pas obèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT T.TABLE_SCHEMA, T.TABLE_NAME,
           CASE  
              WHEN COUNT(*) > 160 THEN 'ATTERANT'
              WHEN COUNT(*) > 80 THEN 'HORRIBLE'
              WHEN COUNT(*) > 40 THEN 'DÉGUEULASSE'
              ELSE 'MAUVAIS'
           END           
    FROM   INFORMATION_SCHEMA.COLUMNS AS C
           INNER JOIN INFORMATION_SCHEMA.TABLES AS T
                 ON C.TABLE_SCHEMA = T.TABLE_SCHEMA 
                 AND C.TABLE_NAME = T.TABLE_NAME
    WHERE  TABLE_TYPE = 'BASE TABLE' 
    GROUP  BY T.TABLE_SCHEMA, T.TABLE_NAME
    HAVING COUNT(*) > 20;
    Tout ce qui apparait dans ce résultat sont des tables potentiellement mal modélisées...
    Si tel est le cas, lisez l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p1...mances_petites


    La dernière vérifie la présence des contraintes CHECK et FOREIGN KEYs :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    WITH
    TT AS
    (
    SELECT CAST(COUNT(*) AS FLOAT) AS NOMBRE_TABLE
    FROM   sys.objects
    WHERE  "TYPE" = 'U'
    ),
    TC AS
    (
    SELECT CAST(COUNT(*) AS FLOAT) AS NOMBRE_COLONNE
    FROM   INFORMATION_SCHEMA.COLUMNS AS C
           INNER JOIN INFORMATION_SCHEMA.TABLES AS T
                 ON C.TABLE_SCHEMA = T.TABLE_SCHEMA 
                 AND C.TABLE_NAME = T.TABLE_NAME
    WHERE  TABLE_TYPE = 'BASE TABLE' 
    ),
    TCK AS
    (
    SELECT SUM(NOMBRE_CHECK) AS NOMBRE_CHECK
    FROM   (SELECT CAST(COUNT(*) AS FLOAT) AS NOMBRE_CHECK
            FROM   sys.objects
            WHERE  "TYPE" = 'C'
            UNION ALL
            SELECT COUNT(*)
            FROM   sys.columns AS c  
                   INNER JOIN sys.types AS t 
                         ON c.user_type_id = t.user_type_id 
                   INNER JOIN sys.objects AS r 
                         ON t.rule_object_id = r.object_id) AS T_CHEK
    ),
    TFK AS
    (
    SELECT DISTINCT CAST(COUNT(object_id) OVER() AS FLOAT) AS NOMBRE_FK
    FROM   sys.objects
    WHERE  "TYPE" = 'F'
    ),
    T AS
    (
    SELECT NOMBRE_TABLE, (NOMBRE_CHECK / NOMBRE_COLONNE) * 100 AS RATIO_CHECK, 
                         (NOMBRE_FK/ NOMBRE_TABLE) * 100 AS RATIO_FK 
    FROM   TT
           OUTER APPLY TC
           OUTER APPLY TCK
           OUTER APPLY TFK
    )
    SELECT NOMBRE_TABLE, 
           RATIO_CHECK, CASE WHEN RATIO_CHECK > 80 THEN 'excellent'
                             WHEN RATIO_CHECK > 40 THEN 'bien'
                             WHEN RATIO_CHECK > 20 THEN 'correct'
                             WHEN RATIO_CHECK > 10 THEN 'faible'
                             WHEN RATIO_CHECK >= 5 THEN 'insignifiant'
                             WHEN RATIO_CHECK < 5 THEN 'mauvais'
                             ELSE 'nul !' END AS RATIO_CHECK_QUALITY,
           RATIO_FK, CASE WHEN RATIO_FK > 100 THEN 'excellent'
                             WHEN RATIO_FK > 80 THEN 'bien'
                             WHEN RATIO_FK > 60 THEN 'correct'
                             WHEN RATIO_FK > 40 THEN 'faible'
                             WHEN RATIO_FK >= 20 THEN 'insignifiant'
                             WHEN RATIO_FK < 20 THEN 'mauvais'
                             ELSE 'nul !' END AS RATIO_FK_QUALITY
     
    FROM T;
    L'absence des contraintes empêche l'optimiseur de fournir des requêtes efficaces !

    Dites nous les résultats de ces trois requêtes... peut être me trompe-je, mais je pense que vous ne serez pas déçue et redescendrez de votre piédestal !

    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/ * * * * *

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

Discussions similaires

  1. Faites vos tests de performance avec nmon sous Aix
    Par Katyucha dans le forum Contribuez
    Réponses: 1
    Dernier message: 27/03/2007, 17h17
  2. Teste de performance MSDE ou SQL server EXpress
    Par mahboub dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/12/2006, 09h34
  3. [MySQL] Test de performance général sur une application PHP
    Par Invité dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/06/2006, 17h36
  4. Réponses: 1
    Dernier message: 17/06/2006, 09h08
  5. [9iR2] : Test de performance
    Par debutant_oracle dans le forum Oracle
    Réponses: 2
    Dernier message: 22/02/2006, 16h22

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