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

PHP & Base de données Discussion :

Augmenter le cache des tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut Augmenter le cache des tables
    Bonjour,

    J'ai un problème : j'ai une base de données qui a 42 tables, et à cause de ce nombre élevé de tables, je n'ai plus de connexion avec la base de données.

    J'ai lu sur internet que pour résoudre ce problème, il faut augmenter le cache des tables.

    Le problème c'est que je ne sais pas comment augmenter le cache des tables.
    Donc est-ce que quelqu'un aurait la charité de me dire comment faire pour augmenter le cache des tables ?

    Sinon, si ça ne vient pas du cache des tables, est-ce que quelqu'un a une idée ?

    Merci, cordialement.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    42 tables c'est rien du tout, et puis ça ne veux pas dire grand chose.
    Il peut avoir plusieurs raison d'un échec à une Bdd.

    - Un volume de données trop grand : Regarde sur PhpMyAdmin par exemple, sa taille est fournie, de même que les pertes.
    Analyse aussi chaque table, voir laquelle aurait une taille trop grande ou anormale.
    Tu pourrais lancer des "OPTIMIZE TABLE nom_table", donc sur chaque table
    /!\ Backup avant !!!

    - Ou tu effectuerais trop de requêtes par rapport à l'offre de ton hébergement.
    Faudrait alors avoir une bonne idée de ce qui provoque ce nombre important de requête.


    Fait le point au moins la dessus avant de vouloir employer les gros moyens.
    Et puis si tu n'as plus de connexion, c'est qu'il y a une erreur qui te l'indique.
    Quelle est cette erreur exactement ? Des timeout par exemple ?

  3. #3
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut
    Salut, et d'abord merci de m'avoir répondu

    Tu as dis :
    "- Ou tu effectuerais trop de requêtes par rapport à l'offre de ton hébergement.
    Faudrait alors avoir une bonne idée de ce qui provoque ce nombre important de requête.
    "
    => c'est vrai, il y a une page web qui doit faire 42 requètes de SELECT pour afficher les données des 42 tables, et c'est à ce moment là que la page rame, et que windows m'informe par une boite de dialogue que mysql.exe a rencontrer un problème.
    Et puis, lorsque j'appuye sur le bouton "Recharger" du navigateur,
    et bien j'ai ce message :

    Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1' (10061) in C:\server\apache\htdocs\monsite.org\includes\monsite.org\database.php on line 10
    no connection

    Par contre ça marche bien pour les page qui contiennent moins de 20 requètes SELECT.

    Donc comment faire pour exécuter un grand nombre de requète sur une méme page sans que ça coupe la connexion avec la base de données.

    Je t'en suis très reconnaissant si tu as la solution.

    A+

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Tu as l'air de faire ceci en local, chez toi, non ?

    En tout cas, c'est vrai que là, ça parait étrange, car ça m'arrive de faire plus d'une 100ène de requêtes sans problème, donc 42 me semble toujours peu.

    Faudrait en dire un peu plus sur le volume que tout ça représente, car 42 ne veut rien dire.
    Tu ne dis toujours rien la dessus.
    As tu fais les vérification que j'ai cité plus haut ?

    Aussi, est ce que tes requêtes sont de grosses chaine SQL ?
    Est ce qu'il y a beaucoup de boucles ?
    Peut tu donner un exemple de code, qui selon toi pourrait provoquer ce phénomène ?
    C'est peut être le code qui va pas, qui sait.

    Regarde aussi tes log d'erreurs comme php_errors, mysql_errors, il y a peut être des infos.


    En tout cas, ce qui m'étonne, c'est que tu n'obtient pas des erreurs du type "timeout" ou "max_query", mais une erreur de connexion.
    Ca me semble très différent.
    Peut être fait tu une déconnexion explicite (comme mysql_close) et ne pas réouvrir tout simplement la connexion après, pour la suivante.
    Si c'est le cas, supprime les mysql_close(), car théoriquement, ceci n'est pas nécessaire, MySQL se charge de fermer automatiquement la connexion quand cela n'est plus nécessaire.


    Pour la mise en cache de requêtes SQL, ça peut être une solution, mais je ne pourrais pas t'en dire beaucoup car je ne me suis pas vraiment penché la dessus.
    C'est pas dit que ce soit une vrai solution, car le peu que j'ai lu la dessus, c'est efficace que si on exécute plusieurs fois la même requête très exactement pour 1 connexion.
    Si on fait 50 requêtes différentes, on ne tirerais aucun bénéfice.
    Enfin, faut voir.

    Ceci dit, théoriquement le cache est activé, regarde du coté du php.ini, la directive : mysql.cache_size = 2000

  5. #5
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut
    Oui, je travail en local.

    Lorsque j'utilise mysql_error, j'ai toujours la méme réponse, càd "can't connect...(10061)".

    Je pense que le problème ne vient pas du script de la page web, mais vient soit de la base de données, soit de la taille du cache.

    De plus, lorsque je selectionne la base de données en question dans phpmyadmin, et bien la page web de phpmyadmin rame, et n'arrive pas à afficher la liste des 42 tables => ce qui prouve bien que le problème ne vient pas du script de la page de mon site.

    Et comme je ne peux pas visualiser les caractéristiques de la base de données en question, et bien je ne pourrais pas te dire sa taille.

    Peut étre que la base de données s'est détérioré ?
    Tu m'as dit qu'il faudrait peut étre utiliser optimize table nomDeTable pour chaque table. Mais il y a pas une autre requète qui permet d'optimizer ou réparer une fois pour toute la base de données ?

    Merci, cordialement

  6. #6
    Membre très actif
    Inscrit en
    Février 2009
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 205
    Par défaut
    C'est bon c'est résolu grace à toi

    En fait j'ai fait check table pour toutes les tables de la bdd dans la console mysql.
    Et justement il y en avait une qui ne marchait pas avec check table.
    J'ai donc supprimé cette table, et la recréer.
    Ensuite, tout est redevenu normal.

    Donc conclusion, une de mes 42 tables était corrompue.

    Merci beaucoup pour ton aide précieuse, et ta patience.

    Bien à toi.

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

Discussions similaires

  1. [DATA] Augmenter la taille maximale du nom des tables SAS
    Par bouazovic dans le forum SAS Base
    Réponses: 2
    Dernier message: 13/02/2015, 11h27
  2. Où sont cachées les Clés des tables ?
    Par DEV-10 dans le forum Développement
    Réponses: 6
    Dernier message: 03/12/2008, 23h18
  3. Oracle 9i : Augmentation de la taille des tables
    Par sofiane_bfm007 dans le forum Administration
    Réponses: 5
    Dernier message: 09/05/2008, 16h24
  4. Augmentation soudaine de la taille des tables
    Par tristan_37 dans le forum Oracle
    Réponses: 35
    Dernier message: 09/04/2008, 16h52
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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