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 :

Informations sur le serveur


Sujet :

Administration MySQL

  1. #1
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut Informations sur le serveur
    Bonjour,
    Quand je regarde à partir de phpmyadmin, je reléve quelques valeurs en rouge, donc à améliorer. Faut qu'il m'en reste certains dont je ne sais pas quoi faire. Voici la liste si vous avez des idées :

    Slow_queries 30 Le nombre de requêtes dont le temps d'exécution a excédé long_query_time secondes.
    ---------------------------------
    Handler_read_rnd 1 076 M Le nombre de requêtes de lecture d'un enregistrement basée sur une position fixe. Ce nombre est élevé si vous faites de nombreuses requêtes qui nécessitent de trier les résultats. Vous avez probablement un grand nombre de requêtes qui demandent à MySQL de parcourir des tables en entier, ou vous avez des jointures qui n'utilisent pas correctement les clés.
    ---------------------------------
    Handler_read_rnd_next 1 473 M Le nombre de requêtes de lecture du prochaine enregistrement dans le fichier. Élevé si vous faites plusieurs parcours de tables. Ceci suggère que vos tables ne sont pas correctement indexées ou que vos requêtes ne sont pas écrites de façon à tirer parti des index que vous avez définis.
    ---------------------------------
    Qcache_lowmem_prunes 86 M Le nombre de requêtes qui ont été retirées de la cache pour libérer de la mémoire afin de mettre en cache de nouvelles requêtes. Peut être utilisé afin de peaufiner la taille de la cache. La stratégie utilisée pour déterminer quelles requêtes seront retirées est LRU (least recently used).
    ---------------------------------
    Created_tmp_disk_tables 10 M Le nombre de tables temporaires sur disque créées automatiquement par le serveur lors de l'exécution d'énoncés. Si la valeur du paramètre Created_tmp_disk_tables est trop grande, augmentez la valeur de tmp_table_size afin que les tables temporaires soient maintenues en mémoire au lieu d'être sur disque.
    ---------------------------------
    Select_full_join 44 Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables
    ---------------------------------
    Sort_merge_passes 1 494 Le nombre d'opérations de fusion effectuées par l'algorithme de tri. Si ce nombre est élevé, augmentez la valeur du paramètre sort_buffer_size.
    ---------------------------------
    Opened_tables 678 Le nombre tables qui ont été ouvertes. Si trop élevé, votre cache de table est probablement trop petite.
    ---------------------------------
    Table_locks_waited 793 k Le nombre de fois qu'un verrou de table n'a pu être acquis immédiatement, induisant un temps d'attente. Si ce nombre est élevé et que vous éprouvez des problèmes de performance, commencez par optimiser vos requêtes, puis subdivisez vos tables ou encore utiliser la réplication.

    Merci
    Vincent Pieplu
    Développeur Site Internet

  2. #2
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par PIEPLU Voir le message
    Handler_read_rnd 1 076 M Le nombre de requêtes de lecture d'un enregistrement basée sur une position fixe. Ce nombre est élevé si vous faites de nombreuses requêtes qui nécessitent de trier les résultats. Vous avez probablement un grand nombre de requêtes qui demandent à MySQL de parcourir des tables en entier, ou vous avez des jointures qui n'utilisent pas correctement les clés.
    ---------------------------------
    Handler_read_rnd_next 1 473 M Le nombre de requêtes de lecture du prochaine enregistrement dans le fichier. Élevé si vous faites plusieurs parcours de tables. Ceci suggère que vos tables ne sont pas correctement indexées ou que vos requêtes ne sont pas écrites de façon à tirer parti des index que vous avez définis.

    Select_full_join 44 Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables
    ---------------------------------
    Sort_merge_passes 1 494 Le nombre d'opérations de fusion effectuées par l'algorithme de tri. Si ce nombre est élevé, augmentez la valeur du paramètre sort_buffer_size.

    Je crois que les messages sont assez parlants: tu as un gros problème d'indexation.
    (la plupart de ces messages se résoudront avec une bonne indexation)

    Le mieux pour commencer est d'aller lire cet article, afin de comprendre comment fonctionnent les indexes.

    Ensuite, il te faudra prendre tes requêtes une par une, et les exécuter avec la commande EXPLAIN afin de comprendre ce qui est fait par MySQL, et savoir si tu dois placer des indexes, où, etc.

    C'est un travail assez long mais très intéressant et qui dépend fortement de la structure de tes tables ainsi que de tes requêtes. (cette page te sera également très utile: ici)

    Bon courage, et n'hésites pas à revenir vers nous si tu as des questions
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  3. #3
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Si je fais par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXPLAIN SELECT lat, lon, user_ville
    FROM  `Users` 
    WHERE  `user_id` =  '1'
    Il me renvoie

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE Users const PRIMARY PRIMARY 3 const 1
    Que dois je en tirer ? Merci
    Vincent Pieplu
    Développeur Site Internet

  4. #4
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Sur cette requête, rien à part qu'il se base sur la clé primaire de ta table (qui je l'espère est user_id )

    Là où ça devient utile, c'est sur des requêtes faisant intervenir des jointures, ainsi que sur des requêtes avec des "where clauses" complexes, ou des tris.
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  5. #5
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Oui oui, j'ai bien la clé sur l'user_id

    Par contre, j'ai des centaines de requêtes sur le site, il n'existe pas des outils pour analyser le site et récupérer les "merdiques"

    Merci, bon dimanche
    Vincent Pieplu
    Développeur Site Internet

  6. #6
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Il y a la possibilité de récupérer la liste des requêtes plus longues que long_query_time en modifiant le my.cnf et en relançant MySQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    log-slow-queries = /var/log/mysql/mysql-slow.log
    long_query_time = 1
    Tes requêtes seront alors dans le fichier /var/log/mysql/mysql-slow.log
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  7. #7
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Voilà, j'ai fait ce que tu m'as dit. Voici ce que cela me renvoi:

    /usr/local/mysql41/bin/mysqld, Version: 4.1.22-standard-log. started with:
    Tcp port: 3306 Unix socket: /tmp/mysql.sock
    Time Id Command Argument
    # Time: 091104 2:15:59
    # Query_time: 24 Lock_time: 0 Rows_sent: 814076 Rows_examined: 814076
    SELECT /*!40001 SQL_NO_CACHE */ * FROM `TABLE1`;
    # Time: 091104 17:26:59
    # Query_time: 13 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
    delete FROM `TABLE2` WHERE `dt_fiche_vue`< '1257030000';
    # Time: 091105 2:15:45
    # Query_time: 15 Lock_time: 0 Rows_sent: 814203 Rows_examined: 814203
    SELECT /*!40001 SQL_NO_CACHE */ * FROM `TABLE1`;
    Que puis-je faire avec ça ??
    Vincent Pieplu
    Développeur Site Internet

Discussions similaires

  1. Informations sur les serveurs
    Par houba1111 dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 0
    Dernier message: 17/11/2011, 16h24
  2. Recherche d'informations sur le serveur Counter-Strike
    Par ekudarius dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2009, 13h22
  3. Comment obtenir des informations sur le serveur?
    Par Me,Myself and I dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/01/2007, 09h36
  4. Réponses: 5
    Dernier message: 03/02/2006, 13h47

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