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 :

comment mysql gère la mise en cache?


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut comment mysql gère la mise en cache?
    Bonjour.
    J'ai une base sous mysql, et une table sur laquelle je lance des requêtes.
    La première fois que je lance ces dernières, elles s'éxécutent lentement puis une fois que mysql a mis les index en place deans le cache ... elles s'éxécutent très rapidement, même si les valeurs de restrictions dans la clause where change.
    Pour pouvoir bien tester mes requêtes et de les optimiser, j'aurais besoin de pouvoir effacer tout ce que mysql a conserver en mémoire pour que les requêtes s'éxécutent comme la première fois.

    Seulement, j'ai utiliser les commandes flush tables, user-resources... reset query-cache et pourtant, même si mes requêtes redeviennent un peu plus lente comme ça elles sont loin de redevenir aussi lentes que lors des premières exécutions.

    Je souhaiterai donc comprendre à quoi cela est dû, qu'est ce que mysql conserve en mémoire? et comment l'effacer?

    En effet, même si j'arrète le service mysql et le redémarre, les requêtes restent rapides, alors que si je redémarre l'ordinateur, elles redeviennent lentes aux premières éxécutions.

    Merci d'avance pour votre aide.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Un bon point de départ : la documentation MySQL, et plus particulièrement la partie dédiée au cache .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Merci pour la réponse!
    Mais le problème, c'est que j'avais déjà mis le cache de requête à 0 dans mysql, c'est pour ça que je ne comprend pas ce qu'il a gardé des premières exécutions.
    Je dois dire aussi que dans le show processlist, l'état qui prend le plus de temps est 'optimizing'. Je me demandais donc si mysql n'avait pas gardé le schéma d'optimisation de ma requête quelquepart, ou la requête préparée...

  4. #4
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par dubble Voir le message
    Je souhaiterai donc comprendre à quoi cela est dû, qu'est ce que mysql conserve en mémoire? et comment l'effacer?

    En effet, même si j'arrète le service mysql et le redémarre, les requêtes restent rapides, alors que si je redémarre l'ordinateur, elles redeviennent lentes aux premières éxécutions.
    Là ça ressemble au cache de l'OS, surtout si on parle de MyIsam. Tous les OS conservent un cache des DD pour limiter les IO. Au démarrage de la machine il faut obligatoirement lire sur le disque, mais après même en redémarrant mysql un select peut y couper intégralement.

    Le bon point c'est qu'en pratique la BDD n'est pas à froid donc ça reste des conditions normales pour la requête (suivant la taille des données). A la limite pourquoi ne pas utiliser quelques requêtes de chauffes avant les tests pour éviter la pénalité du premier essai ?

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Merci beaucoup pour la réponse c'est exactement ce que m'a dit mon tuteur de stage! Et c'est vrai que sur le serveur opérationnel, il n'y aura pas de souci puisqu'il reste allumé, c'était énervant de ne pas comprendre pourquoi!!
    Je pensais que Mysql vidait toutes les données mises en cache et que donc dans le cache de l'OS il n'y avait rien au début de l'éxécution de ma requête.
    A+

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

Discussions similaires

  1. Redirection de lien -> Comment annuler la mise en cache ?
    Par souffle56 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 02/12/2011, 22h19
  2. Comment forcer la Mise en cache des données ?
    Par sybcat dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 12/03/2010, 08h16
  3. Mysql mise en cache
    Par nico_papy dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/01/2008, 12h37
  4. [WebForms]Comment désactiver la mise en cache?
    Par joKED dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/01/2007, 21h58
  5. mise en cache du navigateur
    Par littleqi dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2005, 15h18

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