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

MySQL Discussion :

Problème de lenteur


Sujet :

MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 43
    Points
    43
    Par défaut Problème de lenteur
    Bonjour à tous,

    Le titre n'est pas très explicite, j'en conviens !

    Alors en quelques lignes

    Je réalise de l'import CVS dans ma BDD pour un nombre de records qui se situera aux environ de 40 000 et plus si affinité !

    Cette opération se déroule sans difficulté jusqu'à environ 10 000 records (les "import" varient de 200 à 700 environ à chaque fois) pour environ 2 500 journalier.

    Lorsque je commence à arriver dans la zone des 10 000 et + le ralentissement est telle que le site fini par planter.

    D'après mon hébergeur, les ressources du serveur ne sont pas en cause, ou du moins sont largement suffisante pour l'utilisation actuelle (bdd 11 Mo et le site n'est pas encore en ligne). Et lorsque j'explique la situation, il s'agit, selon lui, de requêtes qui ne sont pas fermés dans la BDD et qui par conséquent la "pollue". Il m'a donc conseillé de "fermer" en "nettoyant" ma BDD.

    Cette remarque me semble relativement "logique", mais selon-vous qu'en est-il ?

    Et dans ce cas quelle requête MySQL serait à utiliser pour "netoyer/fermer" les requêtes. En d'autre terme existe-t-il une requête générique qui peut s'appliquer dans ce genre de situation. Ou cela dépend de la BDD, CMS etc...

    Je vous remercie par avance de l'aide que vous pourrez m'apporter

  2. #2
    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 381
    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 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Archinformatique.

    Votre hébergeur vous raconte des conneries !

    40.000 lignes à charger dans votre base de données, ce n'est pas énorme.
    Alors comment faire pour éviter ce genre de lenteur que vous rencontrez ?

    1) un chargement cela peut prendre du temps disons 1 minute.
    Or il arrive que MySql soit mal configuré et vous obtenez un timeout.
    Pour ce faire, vous devez modifier le paramétrage de MySql ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # ------------------------------#
    #     Timeout Configuration     #
    # ------------------------------#
     
    connect-timeout     = 600
    interactive-timeout = 600
    wait-timeout        = 600
    C'est à mettre dans votre fichier my.ini dans la section du nom de votre service mysqld.
    Comme je travaille avec WampServer, ce service se nomme "wampmysqld".

    600 = 60 x 10. Cela représente donc 10 minutes, car l'unité est le seconde.

    2) pour accélérer le chargement, vous devez désactiver plusieurs paramètres qui n'ont pas lieu d'être dans ce genre d'opération.
    Je suppose qu'au préalable, votre table ou votre base est vide.

    Au début de votre script de chargement vous faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET AUTOCOMMIT                 = 0;
    SET SESSION query_cache_type   = off;
    SET SESSION unique_checks      = 0;
    SET SESSION foreign_key_checks = 0;
    Pour chaque table, vous mettez avant le chargement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `medecin` DISABLE KEYS;
    Et après le chargement, vous faites cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `medecin` ENABLE KEYS;
    Et enfin de script de chargement, vous faites l'inverse de ce que vous avez mis au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET AUTOCOMMIT                 = 1;
    SET SESSION query_cache_type   = on;
    SET SESSION unique_checks      = 1;
    SET SESSION foreign_key_checks = 1;
    En principe, le chargement sera bien plus rapide.

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

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    @Artemus24 tout d'abord merci pour votre réponse.

    Alors voilà un plus d'info (ce que par ailleurs j'aurai du faire lors de mon 1er post). Les seules réglages sur lesquelles je peux intervenir actuellement sur MySQL sont les suivants :

    max_allowed_packet : 32M (maximum)
    tmpdir : /dev/shm
    max_user_connections : 50 (maximum 200)
    interactive_timeout : 3600 secondes (maximum 28800)
    autocommit :1
    innodb_buffer_pool_size : 64M (maximun 512)
    wait_timeout : 3600 secondes (maximun 28800)
    max_connections : 200 (maximun)
    event_scheduler : OFF

    Il s'agit d'un serveur mutualisé avec un bdd privé, et qui, comme vous l'avez supposé, est vide au départ. Et malheureusement le cms que j'utilise (WP+le plugin qui me permet de réaliser les import ne fonctionne pas avec WampServer... du moins le plugin ne fonctionne pas ! )

    Capacité de la RAM 250 Mo et j'utilise actuellement environ 180 Mo.

    Je vais bien entendu regarder avec grand intérêt vos conseils. Sachant que, en donnée complémentaire, un import d'environ 600 records dure entre 2 et 3 minutes au début et lorsque que j’atteins en cumul d'environ 8 000 records les ralentissements au niveau de l'import se font sentir. Le temps d'importation est alors le suivant pour 100 record : environ 1 minute.

    Tout le site n'est pas impacté par ce ralentissement ! Actuellement les quelques pages créés s'affiche parfaitement, c'est juste la partie concernée par lesdits import qui "souffre". Il s'agit de catégorie et lorsque que je souhaite les afficher j'atteins facilement entre 11 et 15 s. Ce qui est inconcevable. Donc j'ai deux problèmes lié : un temps d'affichage des catégories qui s'allonge au fur et à mesure des imports et un un temps d'importation qui s'allonge également (là je ne suis pas certain d'avoir été très clair)

    Je vais, par conséquent essayer de faire le lien entre vos conseils, WP et le plugin et voir ce qu'il est possible de faire.

    cdt

  4. #4
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2014
    Messages : 51
    Points : 43
    Points
    43
    Par défaut
    Confirmé par le mode console qui donne :

    103 requests | 58.7 KB tranfered | finish : 21.56 s | DOMContendLoaded : 15.94 s | Load : 16.21 s

    Pour l'affichage d'une catégorie

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/06/2006, 11h59
  2. [Applet] Problème de lenteur d'un JTree
    Par Frac10 dans le forum Composants
    Réponses: 3
    Dernier message: 22/05/2006, 16h49
  3. [CR10][ODBC][XML] problème de lenteur
    Par capitainerotel dans le forum Connectivité
    Réponses: 4
    Dernier message: 09/05/2005, 18h58
  4. Optimiser MS SQL2000 car j'ai des problèmes de lenteurs
    Par djavaux dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/04/2004, 10h50

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