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 MySQL Discussion :

Problème de perfs


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut Problème de perfs
    Bonjour à tous,

    J'ai un problème de perf lors que je lance une requête qui fait appel à une vue.
    La requête prend 9s sachant qu'au niveau de l'environnement de test la même requête ne dépasse pas 2s.

    Ce problème ce manifeste seulement au niveau PROD. Donc j'ai effectué une comparaison des différents paramètres ( MySQL) mais sans vain, je trouve mêmes valeurs.

    J'ai effectué un Arrêt Relace de MySQL. j'ai effectué également une reconstruction de la base ( export/import). j'ai lancé une mise à jours des statistiques ( ANALYSE TABLE XXXX).

    Consommation normale des ressources RAM/CPU sur les deux environnements, les deux machines sont taillées de la même manière.
    Pas de contentions sur disque ( I/O).


    J'ai la même volumétrie et la même structure des données sur les deux environnements.
    Il s'agit d'une (VM) Linux 2.6.32-696.20.1.el6.x86_64.
    MySQL Server version: 5.7.12


    Seule différence que j'avais identifié au niveau des paramètres THP

    [Bernard@PROD ~]$ cat /sys/kernel/mm/transparent_hugepage/khugepaged/pages_collapsed
    8355

    [Bernard@TEST ~]$ cat /sys/kernel/mm/transparent_hugepage/khugepaged/pages_collapsed
    2133

    [Bernard@PROD ~]$ cat /sys/kernel/mm/transparent_hugepage/khugepaged/full_scans
    12392


    [Bernard@TEST ~]]$ cat /sys/kernel/mm/transparent_hugepage/khugepaged/full_scans
    2855

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonsoir,

    Publiez la requete, le DDL de création des tables et index et les éléments statistiques (volumétrie, nombre de valeur distinctes pour les critères de filtrage et de jointure)

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    Citation Envoyé par Whispers
    La requête prend 9s sachant qu'au niveau de l'environnement de test la même requête ne dépasse pas 2s.
    J'ai comme critère de performance < 1s. Le problème était déjà existant en test.

    Citation Envoyé par Whispers
    Ce problème se manifeste seulement au niveau PROD.
    Nous ignorons le nombre de connexions que vous avez en test et en prod, mais une des différences peut provenir d'une surcharge de la prod par rapport à celle de test.

    Comme le suggère Escartefigue, communiquez nous votre requête, ainsi que le descriptif de vos table.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  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 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Nous ne savons pas de quelle type de requête vous parlez : lecture ?, Mise à jour ??? En concurrence, les attentes liées au libération des verrous peuvent être importante.
    Nous ne savons pas ce que vous mesurez : Temps CPU ? Temps d'exécution ?
    Nous ne savons pas dans quelle condition vous faite ce test : Application Cliente ?, PHP My Admin ???

    Votre question n'a donc aucun intérêt sans ces informations

    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
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut à tous.


    J'ai comme critère de performance < 1s. Le problème était déjà existant en test.
    Une seconde comme critère dans un système de trading financier c'est déjà catastrophique...

    10 s pour une requête qui calcule la paye de tous les employés d'Amazon, c'est plus que super bon !

    Autrement dit, la mesure d'une performance n'a aucun intérêt sans le contexte....

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

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Salut à tous,

    Je lance ma requête à partir de l'invite MySQL , directement sur la machine, je n'utilise aucun client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Server version: 5.7.12 MySQL Community Server (GPL)
     
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
     
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
     
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
    mysql> Ma requête

    Il s'agit d'une VM dédiée à la base de données MySQL, j'ai arrêté l'application et j'ai vérifié ,je suis le seul connecté à la base de données de PROD mais j'ai tjrs le même temps de réponse 9s.

    Ci-dessous la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT IF(v.`MTENGAGE` > v.`MTBREVISE`, CONCAT('Total engagé supérieur au montant du budget ',v.LONGID,' (PLAFOND: ',v.`MTBREVISE`,')'),NULL)
    FROM
    vbudgets v
    WHERE v.`IDBUDGET` =  NAME_CONST('budget',1111);
    La requête fait appel à la vue ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VIEW `vbudgets` AS select `b`.`IDBUDGET` AS `IDBUDGET`,`b`.`MTBREVISE` AS `MTBREVISE`,concat_ws(' ',(case when (`b`.`TB` = 'F') then concat_ws(' ','Fct.',(select `r`.`LIBELLE` from `rubriquesbf` `r` where (`r`.`CODERUBBF` = `b`.`LIGNE`)),`b`.`LIBELLE`) when (`b`.`TB` = 'I') then concat_ws(' ','Inv.',`b`.`LIBELLE`,(case when (`b`.`POSTE` = '001') then 'Materiel' when (`b`.`POSTE` = '002') then 'Logiciel' when (`b`.`POSTE` = '003') then 'Prestations' else '???' end)) else '???' end),(case when (`b`.`CHAPITRE` = 'C') then '(CTB)' when (`b`.`CHAPITRE` = 'R') then '(RTB)' else '???' end)) AS `LONGID`,`b`.`TB` AS `TB`,(select ifnull(sum(`v`.`MONTANT`),0) from `dedvlb` `v` where ((`b`.`IDBUDGET` = `v`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`v`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`v`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTENGAGE`,(select ifnull(sum(`bcvlb`.`MONTANT`),0) from `bcvlb` where ((`b`.`IDBUDGET` = `bcvlb`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`bcvlb`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`bcvlb`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTCOMMANDE`,(select ifnull(sum(`facturesvlb`.`MONTANT`),0) from `facturesvlb` where ((`b`.`IDBUDGET` = `facturesvlb`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`facturesvlb`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`facturesvlb`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTFACTURE` from `tbudgets` `b`

    Je vous confirme que j'ai la même volumétrie et la même structure des données sur les deux environnements ( TEST et PROD).

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut whisper.

    Citation Envoyé par whisper
    Je lance ma requête à partir de l'invite MySQL , directement sur la machine, je n'utilise aucun client:
    Ce dont vous parlez se nomme la console mysql.

    Deux remarques au sujet de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE v.`IDBUDGET` =  NAME_CONST('budget',1111);
    1) pourquoi utilisez-vous la fonction "Name_Const()" qui va associer un nom de colonne "budget" à la valeur "1111" ?
    Cela ne sert à rien et va certainement vous faire perdre du temps. Mettez plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE v.`IDBUDGET` =  1111;
    2) avez-vous défini un index sur la colonne idbudget dans votre table "tbudgets" ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    La requête dans la vue est illisible , si vous voulez de l'aide faites un effort de présentation

    Vous pouvez utiliser l'opérateur JOIN pour les jointures c'est plus facile à comprendre que de mélanger jointure et filtrage
    Enlevez les parenthèses inutiles
    Remplacez IFNULL par COALESCE.
    Et surtout faites des retours à la ligne plutôt que de tout écrire en vrac
    Vous pouvez vous aider avec des sites comme celui-ci pour mettre en forme vos requêtes

    Ensuite comme vous n'avez ni communiqué le DDL de création des table et index, ni les éléments statistiques demandés, comment voulez vous analyser les performances

    En l'attente, vérifiez que vos prédicats de jointure et de filtrage sont sargables et que les colonnes sont de même type, même longueur et qu'il existe un index éligible

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut whisper.


    Ce dont vous parlez se nomme la console mysql.

    Deux remarques au sujet de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE v.`IDBUDGET` =  NAME_CONST('budget',1111);
    1) pourquoi utilisez-vous la fonction "Name_Const()" qui va associer un nom de colonne "budget" à la valeur "1111" ?
    Cela ne sert à rien et va certainement vous faire perdre du temps. Mettez plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE v.`IDBUDGET` =  1111;
    2) avez-vous défini un index sur la colonne idbudget dans votre table "tbudgets" ?

    @+
    Citation Envoyé par escartefigue Voir le message
    [...]
    1) je ne modifierai pas ma requête puisque je l'exécute sur le test et il me retourne les résultats attendu à moins de 2s.

    2) je ne modifierai pas la structure des objets de la base puisque j'ai la même structure ( index, vue, tables...etc) au niveau des deux environnements ( TEST et PROD), alors que je n'ai pas ce prb côté test.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Sans doute, mais il est très rare que les volumes de test soient comparables à ceux de prod, or quand on parle de perfs, les volumes ça compte
    Et les autres stats c'est très important aussi, c'est l'un des critères majeurs de choix du chemin d'accès par l'optimiseur, donc il faut connaitre certains éléments statistiques (facteur de filtrage, valeurs extrêmes, fragmentation etc...)

    Il arrive donc très souvent qu'une même requête donne des temps de réponses très différents entre deux plates formes distinctes

    Enfin, même si vous ne pouvez pas modifier les structures, vous pouvez probablement en communiquer le DDL, car sans description des tables et index, il est difficile de se prononcer sur les perfs

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    J'ai effectué un refresh de la base de TEST par une copie de la PROD. donc le TEST est ISO-PROD en terme de volumes ( données).

    Ci-dessous le plan d'exécution côté TEST et PROD

    ####Explain TEST

    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
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+
    | id | select_type        | table       | partitions | type   | possible_keys | key         | key_len | ref                                               | rows | filtered | Extra       |
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+
    |  1 | PRIMARY            | <derived2>  | NULL       | ref    | <auto_key0>   | <auto_key0> | 4       | const                                             |   10 |   100.00 | NULL        |
    |  2 | DERIVED            | b           | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1495 |   100.00 | NULL        |
    |  3 | DEPENDENT SUBQUERY | facturesvlb | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              |  642 |    10.00 | Using where |
    |  4 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.facturesvlb.ANNEE,budget.facturesvlb.IDDED |    5 |    10.00 | Using where |
    |  4 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.facturesvlb.ANNEE,budget.facturesvlb.IDDED |    1 |     8.00 | Using where |
    |  5 | DEPENDENT SUBQUERY | bcvlb       | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1082 |    10.00 | Using where |
    |  6 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.bcvlb.ANNEE,budget.bcvlb.IDDED             |    5 |    10.00 | Using where |
    |  6 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.bcvlb.ANNEE,budget.bcvlb.IDDED             |    1 |     8.00 | Using where |
    |  7 | DEPENDENT SUBQUERY | v           | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1677 |    10.00 | Using where |
    |  8 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.v.ANNEE,budget.v.IDDED                     |    5 |    10.00 | Using where |
    |  8 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.v.ANNEE,budget.v.IDDED                     |    1 |     8.00 | Using where |
    |  9 | DEPENDENT SUBQUERY | r           | NULL       | eq_ref | PRIMARY       | PRIMARY     | 3       | budget.b.LIGNE                                    |    1 |   100.00 | NULL        |
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+

    ###Explain PROD:


    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
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+
    | id | select_type        | table       | partitions | type   | possible_keys | key         | key_len | ref                                               | rows | filtered | Extra       |
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+
    |  1 | PRIMARY            | <derived2>  | NULL       | ref    | <auto_key0>   | <auto_key0> | 4       | const                                             |   10 |   100.00 | NULL        |
    |  2 | DERIVED            | b           | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1502 |   100.00 | NULL        |
    |  3 | DEPENDENT SUBQUERY | facturesvlb | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              |  749 |    10.00 | Using where |
    |  4 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.facturesvlb.ANNEE,budget.facturesvlb.IDDED |    5 |    10.00 | Using where |
    |  4 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.facturesvlb.ANNEE,budget.facturesvlb.IDDED |    1 |     8.00 | Using where |
    |  5 | DEPENDENT SUBQUERY | bcvlb       | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1108 |    10.00 | Using where |
    |  6 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.bcvlb.ANNEE,budget.bcvlb.IDDED             |    5 |    10.00 | Using where |
    |  6 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.bcvlb.ANNEE,budget.bcvlb.IDDED             |    1 |     8.00 | Using where |
    |  7 | DEPENDENT SUBQUERY | v           | NULL       | ALL    | NULL          | NULL        | NULL    | NULL                                              | 1710 |    10.00 | Using where |
    |  8 | DEPENDENT SUBQUERY | s           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.v.ANNEE,budget.v.IDDED                     |    5 |    10.00 | Using where |
    |  8 | DEPENDENT SUBQUERY | d           | NULL       | ref    | PRIMARY       | PRIMARY     | 8       | budget.v.ANNEE,budget.v.IDDED                     |    1 |     8.00 | Using where |
    |  9 | DEPENDENT SUBQUERY | r           | NULL       | eq_ref | PRIMARY       | PRIMARY     | 3       | budget.b.LIGNE                                    |    1 |   100.00 | NULL        |
    +----+--------------------+-------------+------------+--------+---------------+-------------+---------+---------------------------------------------------+------+----------+-------------+

  12. #12
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut whisper.

    Citation Envoyé par Escartefigue
    vous pouvez probablement en communiquer le DDL
    Escartefigue vous demande de nous fournir la structure de vos tables et vous nous fournissez un explain qui ne nous sert strictement à rien.

    Citation Envoyé par Escartefigue
    La requête dans la vue est illisible , si vous voulez de l'aide faites un effort de présentation
    Sans effort de votre part, whisper, nous vous serons d'aucune utilité.

    Citation Envoyé par whisper
    Je ne veux pas modifier ma requête puisque je l'exécute sur le test et il me retourne les résultats attendu à moins de 2s.
    Je ne modifierai pas la structure des objets la base de données puisque j'ai la même structure ( index, vue, tables...etc) au niveau des deux environnements ( TEST et PROD), alors que je n'ai pas ce problème de perfs côté test.
    A quoi peut servir nos interventions si vous ne désirez pas modifier quoi que ce soit ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Voilà la structure des tables :

    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
    CREATE TABLE `ded` (
      `ANNEE` char(4) NOT NULL,
      `IDDED` int(11) NOT NULL,
      `IDPROJET` int(11) NOT NULL,
      `CHEFPROJET` varchar(10) NOT NULL,
      `DEPARTEMENT` varchar(4) NOT NULL,
      `DESCRIPTION` text,
      `RESULTATATTENDU` text,
      `OBJECTIF` text,
      `SANSBC` tinyint(1) NOT NULL,
      `REFCONTRAT` varchar(30) DEFAULT NULL,
      `ATTRIBUTION` varchar(12) DEFAULT NULL COMMENT 'CNT= contrat, CNS=Consultation, AOF=Appel d''offre',
      `DATC` date NOT NULL,
      `UTIC` varchar(10) NOT NULL,
      `STATUT` char(2) NOT NULL,
      `MOTIFANNULATION` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`ANNEE`,`IDDED`,`IDPROJET`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Demandes d''engagement de dépense';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `facturesvlb` (
      `ANNEE` char(4) NOT NULL,
      `NOBC` varchar(20) NOT NULL,
      `NOFACTURE` varchar(30) NOT NULL,
      `IDBUDGET` int(11) NOT NULL,
      `IDDED` int(11) NOT NULL,
      `MONTANT` decimal(11,2) NOT NULL,
      PRIMARY KEY (`ANNEE`,`NOBC`,`NOFACTURE`,`IDBUDGET`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='ventilation Factures par poste budgétaire';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `bcvlb` (
      `ANNEE` char(4) NOT NULL,
      `NOBC` varchar(20) NOT NULL,
      `IDBUDGET` int(11) NOT NULL,
      `IDDED` int(11) NOT NULL,
      `MONTANT` decimal(11,2) NOT NULL,
      `MTDEV` decimal(11,2) DEFAULT NULL,
      `DEV` char(3) DEFAULT NULL,
      PRIMARY KEY (`ANNEE`,`NOBC`,`IDBUDGET`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `dedsignatures` (
      `ANNEE` char(4) NOT NULL,
      `IDDED` int(11) NOT NULL,
      `NOORDRE` smallint(6) NOT NULL,
      `USERSIGNATAIRE` varchar(10) NOT NULL,
      `DATE` date NOT NULL,
      `SIGNATURE` varchar(3) DEFAULT NULL,
      `COMMENTAIRE` text,
      PRIMARY KEY (`ANNEE`,`IDDED`,`NOORDRE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    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
    CREATE TABLE `dedvlb` (
      `ANNEE` char(4) NOT NULL,
      `IDDED` int(11) NOT NULL,
      `IDBUDGET` int(11) NOT NULL,
      `IDFRS` int(11) NOT NULL,
      `MONTANT` decimal(11,2) NOT NULL,
      `DEVISE` char(3) DEFAULT NULL,
      `MONTANTDEVISE` decimal(11,2) DEFAULT NULL,
      `COMMENTAIRE` text,
      `COURS` decimal(10,4) DEFAULT NULL,
      `ETAT` varchar(2) DEFAULT NULL,
      `MTBREVISE` decimal(11,2) DEFAULT NULL,
      `MTENGAGE` decimal(11,2) DEFAULT NULL,
      `MTDISPO` decimal(11,2) DEFAULT NULL,
      PRIMARY KEY (`ANNEE`,`IDDED`,`IDBUDGET`,`IDFRS`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Ventilation Demande d''engagement';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE `rubriquesbf` (
      `CODERUBBF` char(3) NOT NULL,
      `LIBELLE` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`CODERUBBF`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    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
    CREATE TABLE `tbudgets` (
      `IDBUDGET` int(11) NOT NULL AUTO_INCREMENT,
      `ANNEE` char(4) NOT NULL,
      `TB` char(1) NOT NULL,
      `CHAPITRE` char(1) NOT NULL,
      `LIGNE` char(3) NOT NULL,
      `POSTE` char(3) NOT NULL,
      `DEPARTEMENT` varchar(4) NOT NULL,
      `LIBELLE` varchar(80) DEFAULT NULL,
      `MTBINITIAL` decimal(11,2) NOT NULL,
      `MTBREVISE` decimal(11,2) NOT NULL,
      `COMMENTAIRE` varchar(512) DEFAULT NULL,
      `DATEMODIF` datetime DEFAULT NULL,
      `USERMODIF` char(10) DEFAULT NULL,
      `STATUT` char(2) DEFAULT NULL,
      PRIMARY KEY (`IDBUDGET`),
      UNIQUE KEY `I0_TBUDGETS` (`ANNEE`,`TB`,`LIGNE`,`POSTE`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1719 DEFAULT CHARSET=latin1;

    Effectivement, sans effort on ne peux pas comprendre la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VIEW `vbudgets` AS select `b`.`IDBUDGET` AS `IDBUDGET`,`b`.`MTBREVISE` AS `MTBREVISE`,concat_ws(' ',(case when (`b`.`TB` = 'F') then concat_ws(' ','Fct.',(select `r`.`LIBELLE` from `rubriquesbf` `r` where (`r`.`CODERUBBF` = `b`.`LIGNE`)),`b`.`LIBELLE`) when (`b`.`TB` = 'I') then concat_ws(' ','Inv.',`b`.`LIBELLE`,(case when (`b`.`POSTE` = '001') then 'Materiel' when (`b`.`POSTE` = '002') then 'Logiciel' when (`b`.`POSTE` = '003') then 'Prestations' else '???' end)) else '???' end),(case when (`b`.`CHAPITRE` = 'C') then '(CTB)' when (`b`.`CHAPITRE` = 'R') then '(RTB)' else '???' end)) AS `LONGID`,`b`.`TB` AS `TB`,(select ifnull(sum(`v`.`MONTANT`),0) from `dedvlb` `v` where ((`b`.`IDBUDGET` = `v`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`v`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`v`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTENGAGE`,(select ifnull(sum(`bcvlb`.`MONTANT`),0) from `bcvlb` where ((`b`.`IDBUDGET` = `bcvlb`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`bcvlb`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`bcvlb`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTCOMMANDE`,(select ifnull(sum(`facturesvlb`.`MONTANT`),0) from `facturesvlb` where ((`b`.`IDBUDGET` = `facturesvlb`.`IDBUDGET`) and exists(select `s`.`NOORDRE` from (`ded` `d` join `dedsignatures` `s`) where ((`facturesvlb`.`IDDED` = `d`.`IDDED`) and (`d`.`STATUT` not in ('S','A')) and (`facturesvlb`.`ANNEE` = `d`.`ANNEE`) and (`d`.`IDDED` = `s`.`IDDED`) and (`d`.`ANNEE` = `s`.`ANNEE`) and (`d`.`UTIC` = `s`.`USERSIGNATAIRE`) and (`s`.`SIGNATURE` = 'V'))))) AS `MTFACTURE` from `tbudgets` `b`
    A part l'optimisation de la requête et la modification de la structure, peut être vous pourriez m'orienter vers d'autres pistes d'où l'objet de mon post.

    Je reste à votre disposition si vous souhaitez avoir d'autres éléments.

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    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 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Vos clef primaire sont totalement catastrophiques. En effet :
    1) une année est un chiffre... Pourquoi du CHAR(4) ? Vous êtes masochiste ?
    2) NOBC, NOFACTURE semble être des numéros... Pourquoi du varchar(20) ???
    3) pourquoi des clefs composites quand on peut faire des clefs monocolonne ?
    etc.

    Bref tout ceci concoure à des performances lamentable du fait d'un modèle de données pourri.

    Commencez par revoir la modélisation de lotre base. Nous ne sommes plus au temps des bases hiérarchique ni des fichiers CoBol....

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

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Salut SQLpro,

    L'application a été mal conçue. Le modèle relationnel est encore pire, chose que j'avais remonté à l'éditeur.
    J'ai le même modèle relationnel et la même structure côté PROD et TEST alors que je n'ai pas ce problème de perfs au niveau TEST.

    A part l'optimisation de la requête et la modification de la structure, peut être vous pourriez m'orienter vers d'autres pistes.

    Merci beaucoup pour ton aide.


    Whisper

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Effectivement la modélisation est catastrophique, mais si vous n'avez pas la possibilité d'y remédier, inutile d'insister sur ce chapitre

    Si vous avez les mêmes données en prod et en test (l'explain ne donne toutefois pas exactement les mêmes chiffres mais admettons) l'écart de performances peut venir de plusieurs phénomènes
    - caractéristiques du serveur (peu probable : en général la prod est mieux dimensionnée que le test, mais sait on jamais )
    - statistiques trop anciennes, fragmentation des données
    - sollicitations de la CPU très supérieure en prod (très probable)

    Vérifiez tout de même, comme je le suggérai plus haut, si vos prédicats de jointure et de filtrage correspondent à des index filtrants (vous avez communiqué le DDL des tables, mais pas celui des index)

  17. #17
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    J'ai mis en forme le vue :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    VIEW `vbudgets` AS
      select  `b`.`IDBUDGET`  AS `IDBUDGET`,
              `b`.`MTBREVISE` AS `MTBREVISE`,
              concat_ws(' ',(  case when (`b`.`TB` = 'F') then concat_ws(' ',
                                                                         'Fct.',
                                                                         (  select  `r`.`LIBELLE`
                                                                              from  `rubriquesbf` `r`
                                                                             where  (`r`.`CODERUBBF` = `b`.`LIGNE`)
                                                                         ),
                                                                         `b`.`LIBELLE`
                                                                        )
     
                                    when (`b`.`TB` = 'I') then concat_ws(' ',
                                                                         'Inv.',
                                                                         `b`.`LIBELLE`,
                                                                         (  case when (`b`.`POSTE` = '001') then 'Materiel'
                                                                                 when (`b`.`POSTE` = '002') then 'Logiciel'
                                                                                 when (`b`.`POSTE` = '003') then 'Prestations'
                                                                                                            else '???'
                                                                            end
                                                                         )
                                                                        )
     
                                                          else '???'
                               end
                            ),
     
                            (  case when (`b`.`CHAPITRE` = 'C') then '(CTB)'
                                    when (`b`.`CHAPITRE` = 'R') then '(RTB)'
                                                                else '???'
                               end
                            )
                       ) AS `LONGID`,
     
              `b`.`TB` AS `TB`,
     
              (  select  ifnull(sum(`v`.`MONTANT`),0)
                   from  `dedvlb` `v`
                  where       ((`b`.`IDBUDGET` = `v`.`IDBUDGET`)
                    and exists (  select  `s`.`NOORDRE`
                                    from (`ded` `d` join `dedsignatures` `s`      )
     
                                   where ((`v`.`IDDED`     = `d`.`IDDED`         )
                                     and  (`d`.`STATUT`    not in ('S','A')      )
                                     and  (`v`.`ANNEE`     = `d`.`ANNEE`         )
                                     and  (`d`.`IDDED`     = `s`.`IDDED`         )
                                     and  (`d`.`ANNEE`     = `s`.`ANNEE`         )
                                     and  (`d`.`UTIC`      = `s`.`USERSIGNATAIRE`)
                                     and  (`s`.`SIGNATURE` = 'V')
                                         )
                               )
                              )
              ) AS `MTENGAGE`,
     
              (  select  ifnull(sum(`bcvlb`.`MONTANT`),0)
                   from  `bcvlb`
                  where       ((`b`.`IDBUDGET` = `bcvlb`.`IDBUDGET`)
                    and exists (  select  `s`.`NOORDRE`
                                    from ( `ded` `d` join `dedsignatures` `s`          )
     
                                   where ((`bcvlb`.`IDDED`      = `d`.`IDDED`         )
                                     and  (    `d`.`STATUT`     not in ('S','A')      )
                                     and  (`bcvlb`.`ANNEE`      = `d`.`ANNEE`         )
                                     and  (    `d`.`IDDED`      = `s`.`IDDED`         )
                                     and  (    `d`.`ANNEE`      = `s`.`ANNEE`         )
                                     and  (    `d`.`UTIC`       = `s`.`USERSIGNATAIRE`)
                                     and  (    `s`.`SIGNATURE`  = 'V'                 )
                                         )
                               )
                              )
              ) AS `MTCOMMANDE`,
     
              (  select  ifnull(sum(`facturesvlb`.`MONTANT`),0)
                   from  `facturesvlb`
                  where      ( (`b`.`IDBUDGET` = `facturesvlb`.`IDBUDGET`)
                    and exists (  select `s`.`NOORDRE`
                                  from (`ded` `d` join `dedsignatures` `s`)
     
                                 where ((`facturesvlb`.`IDDED`      = `d`.`IDDED`         )
                                   and  (          `d`.`STATUT`     not in ('S','A')      )
                                   and  (`facturesvlb`.`ANNEE`      = `d`.`ANNEE`         )
                                   and  (          `d`.`IDDED`      = `s`.`IDDED`         )
                                   and  (          `d`.`ANNEE`      = `s`.`ANNEE`         )
                                   and  (          `d`.`UTIC`       = `s`.`USERSIGNATAIRE`)
                                   and  (          `s`.`SIGNATURE`  = 'V'                 )
                                       )
                               )
                             )
              ) AS `MTFACTURE`
     
        from `tbudgets` `b`;
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  18. #18
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Merci, mais il existe (si besoin) pour celà des sites qui font le taf
    exemple : https://sqlformat.org/

    L'idée c'est surtout d'inciter le demandeur à formuler un besoin clair et intelligible, écrire une requête formatée ne prend pas plus de temps et c'est même le contraire, que du code à la volée
    Ici je suppose que c'est le logiciel qui produit la requête "en vrac", visiblement un logiciel écrit avec les pieds, vu le DDL !

  19. #19
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    Citation Envoyé par whisper
    A part l'optimisation de la requête et la modification de la structure, peut être vous pourriez m'orienter vers d'autres pistes d'où l'objet de mon post.
    Cassez votre tirelire et acheter un autre ordinateur, plus puissant.
    A la limite, changer le processeur afin d'avoir plus de cœurs, plus de threads.
    Et augmenter le nombre de RAM afin de mettre le maximum de ce qui est permis physiquement.

    A mon humble avis, c'est une refonte total du projet qui est nécessaire.

    Citation Envoyé par Escartefigue
    L'idée c'est surtout d'inciter le demandeur à formuler un besoin clair et intelligible,
    Normalement, il y a une règle dans ce forum qui stipule de fournir toutes les informations nécessaire à la résolution du problème rencontré.
    Expliquer intelligiblement est une des première lacune que l'on rencontre le plus fréquemment.
    Une autre lacune est de s'improviser DBA sans avoir les compétences pour le faire, ni le temps pour l'entreprendre.

    Hormi la réécriture de la requête, ou créer de nouveaux index, c'est tout ce que l'on peut faire pour améliorer la performance dans une première approche.
    Ensuite, là où c'est le plus compliquer, c'est le paramétrage du fichier my.ini, pour l'ajuster en fonction des caractéristiques de l'ordinateur.
    Faire des tas de tests pour cerner le problème, voire améliorer ce qui peut l'être.
    Mais comme la compétence n'est pas du ressort du demandeur, il est difficile de l'aider.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Salut à tous,

    Je n'arrive pas toujours à identifier la source de ce problème mais soyez sûre c'est juste question de temps.

    Il suffit de prendre un peu de recule pour comprendre pourquoi je ne veux ni changer la structure de la base, ni modifier la requête et vous allez conclure que whisper ne s'improvise pas DBA.

    Je vous tiens informer de la suite ....

    Merci à tous


    Whisper.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de perf sous Tomcat 5.5
    Par gamodio dans le forum Tomcat et TomEE
    Réponses: 14
    Dernier message: 18/07/2006, 11h48
  2. [VBA-E] Problème de perf'
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2006, 16h22
  3. Réponses: 11
    Dernier message: 19/06/2006, 16h54
  4. problèmes de perfs IE6/Firefox
    Par fredoche dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 26/08/2005, 17h44
  5. Problème de perfs Sous requetes IN
    Par ias83 dans le forum SQL
    Réponses: 4
    Dernier message: 15/06/2005, 12h39

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