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 :

UPDATE longs sur table très consultée [MySQL-5.5]


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    phpéteur
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : phpéteur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut UPDATE longs sur table très consultée
    Bonjour à tous,

    Je rencontre une difficulté sur laquelle je coince un peu, et qui pourtant doit être assez courante. Bizarrement j'ai cherché un peu partout sur le net et je n'ai pas réussi à trouver de doc sur ce sujet...
    J'ai une table avec assez peu de lignes, environ 90 000, mais avec pas mal de champs et d'index (il s'agit d'un catalogue produits).

    En ce qui concerne les requêtes SELECT aucun soucis la table est optimisée et très réactive, mais au niveau des UPDATE là par contre le traitement est très long : jusqu'à 8 secondes pour mettre à jour 1 champ sur 1 ligne.
    J'ai tenté les commande de réparation, vérification, optimisation, etc. Mais ça ne change rien.

    Je me suis rendu compte que le problème était lié au trafic sur le site : si je copie la table sous un nouveau nom (donc non consultée), les requêtes d'UPDATE sont à nouveau instantanées. En général il y a environ 30 à 40 requêtes simultanées sur cette table.

    Je me demandais donc si l'un d'entre vous avait déjà rencontré ce problème et comment il l'avait contourné?

    Merci!

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    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 633
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    C'est probablement du justement à votre table dite "obèse" c'est à dire avec un très grand nombre de colonnes.

    Une table "obèse" est symptomatique d'une erreur de modélisation par non respect des formes normales.
    Cas typique, et malheureusement très fréquent : la table des personnes qui contient non seulement le nom, le prénom, la date de naissance etc.., mais aussi les n° de téléphone, les adresses etc...

    Les conséquences sont que les applis qui mettent à jour la partie signalétique (nom, prénom, date de naissance) celles qui mettent à jour les adresses et celles qui mettent à jour les contacts (tél, mail)... sont en concurrence lorsqu'il s'agit du même individu ou d'individus dont les données sont sur la même page.
    Alors qu'avec, toujours dans le même exemple, une modélisation rigoureuse (une table signalétique, une table adresses et une table contacts), il n'y aurait aucune concurrence d'accès.

    Communiquez le DDL de votre table et de ses index pour en avoir le coeur net

    Communiquez aussi votre requête UPDATE, elle peut également être à l'origine du problème

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    phpéteur
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : phpéteur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut
    Effectivement ce point m'avait complètement échappé, j'étais plutôt parti sur un problème lié à la config de mysql...

    Ce qui me paraissait assez surprenant c'est le fait que sur cette table il ne peut y avoir qu'une seule requête UPDATE à la fois, et que les nombreuses requêtes SELECT simultanées restent pour autant extrêmement rapides.
    Le point que j'avais zappé c'est le nombre important d'index que comporte cette table. J'ai une autre table du même genre à coté qui possède pas mal de colonnes, avec presque le même nombre de lignes et le même trafic, mais seulement 3 index, et là aucun souci avec les UPDATE.

    En fait le problème concrètement c'est que la reconstruction des index doit être vraiment très longue à chaque modification d'une des valeurs. Maintenant il me reste à bosser sur la structure de la table pour permettre une recherche rapide tout en réduisant le nombre d'index. Et pour ça effectivement pas le choix il va falloir diviser la table...

    Du coup maintenant au boulot
    Merci d'avoir pris le temps de me répondre

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

Discussions similaires

  1. [2014] Updates d'une table très fréquents
    Par Trady dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/04/2016, 02h57
  2. DELETE très long sur grosse table partitionée
    Par glutock dans le forum SQL
    Réponses: 3
    Dernier message: 28/04/2008, 10h47
  3. Tri sur table access très long
    Par nathalie.de dans le forum Access
    Réponses: 6
    Dernier message: 15/09/2007, 11h10
  4. [Oracle 9.1] Opérations sur tables très proches...
    Par ftrifiro dans le forum Oracle
    Réponses: 7
    Dernier message: 10/10/2005, 14h10
  5. Réponses: 2
    Dernier message: 29/09/2004, 09h07

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