« Les index MySQL » : la série dont vous êtes le héros

5 juin 2008 par arnaud

Un titre sans doute bien étrange pour certains et qui rappelera des souvenirs à d’autres, surtout à ceux qui ont déjà parcouru un de ces livres « dont vous êtes le héros« …

Afin que les choses soient claires pour tout le monde, je vous propose en fait de participer à la conception du sommaire de la future série d’articles sur les index qui sera publiée prochainement sur dbnewz.

L’indexation est en effet un thème auquel il faut absolument s’intéresser, tout d’abord pour éviter des catastrophes et bien sûr pour optimiser les performances !

Les index sont une arme redoutable, à double tranchant : oubliez-les et ils se rappeleront violemment à votre bon souvenir « ça ne fait pas 5 min que nous sommes en production et la base ne répond plus, la sonde cpu est à 100%, on ne peut même plus se connecter à la base (too many connections), qu’est ce qui se passe ?! » Dans le même genre d’extrêmes, invitez-les partout et vous compliquerez la tâche de l’optimiseur MySQL (chargé de concevoir le meilleur plan d’exécution possible pour vos requêtes), ralentirez vos mises à jour et augmenterez la taille de vos bases de données, générant d’autres problèmes…
En revanche, une bonne stratégie d’indexation permet parfois d’obtenir des gains en performance très importants, parmi les plus importants qu’on puisse obtenir en agissant sur les réglages d’une configuration MySQL « classique ».

Ce que je vous propose donc, c’est non pas de m’envoyer des copies de vos plans d’exécution ou les schémas de vos tables, mais plutôt de poster ici vos attentes, les zones d’ombre que vous souhaiteriez éclaircir concernant les index.
Exemples :
« Pourquoi un index disponible n’est pas pris en compte ? »
« En quoi indexer peut améliorer les performances ? »
« Quels sont les champs à indexer ? », etc, etc.

Profitez de l’occasion qui vous est donnée pour poster dans les commentaires de ce billet vos problématiques, vos souhaits, j’en tiendrai compte lors de la conception des différents chapitres que comportera cette série qui deviendra du « cousu main » pour tous les participants, intéressant non ?

A vos claviers ;)

Mots-clefs :

7 commentaires sur “« Les index MySQL » : la série dont vous êtes le héros”

  1. Mat dit :

    Salut, merci c’est une tres bonne idee :)

    Voici mes zones d’ombres concernant les index :
    - Dans quels cas de figure dois-je eviter d’indexer et preferer le full table scan ?
    - Dans quel cas dois-je faire un index sur plusieurs champs (ex: sur 3 champs), et dans quel cas dois-je prefer plusieurs index (ex: 3 index, chacun sur un champ) ?

  2. fylou dit :

    Très bonne idée en effet…

    Dans quel cas faut il préférer un index sur deux champs combinés ou un index pour chaque champ également pour moi ?

    pour une jointure left par exemple est-ce que seulement la table pointée est à indexer?

    Quels sont les types de donnée qu’il faut éviter d’indexer et dans quels cas (ex:char/varchar ou int(4)/int(11) ) , quels gains de performances?

    utilisation d’une table temporaire plutot que de jointure sur grosse tables dans certains cas (cela a été mon cas) ?

  3. stef13013 dit :

    Super idée,

    Comment « connaitre » (ou essayer du moins) le cas « classique » ou un index ne sera pas être utilisé par le moteur ?

  4. tsyr dit :

    Très bonne idée, et déjà quelques questions très intéressantes ont été posées.
    J’en aurais une à vous soumettre (légèrement à la bourre ^^)

    – Comment vérifier l’utilité d’un index ? (comment savoir qu’un index ralentit les requêtes au lieu de les aider, en somme)
    – Est-ce lié à la « cardinalité » indiqué dans PhpMyAdmin ?
    – Si non, à quoi correspond cette « cardinalité » ?

  5. Arnaud dit :

    Hello tsyr,

    Tes questions sont intéressantes (ainsi que les précédentes !), le premier épisode est prévu pour la semaine prochaine, je ne te garantis pas que je traiterai la cardinalité tout de suite, mais c’est bien sûr prévu…

    Si ça n’est pas déjà fait : abonnez-vous au flux rss pour ne rien rater de cette série ;)

  6. [...] d’entre vous, les “héros”, ont posé leurs questions (oui il est possible de devenir un héros rien qu’en lisant dbnewz ! Les véritables héros sont d’ailleurs abonnés au tout [...]

  7. [...] une sorte de Yahoo! Question – Réponse sauce DBNewz. Suite à l’idée d’Arnaud et sa série dont vous êtes le héros, nous vous invitons à poser une question par émail à question@( vous connaissez le domaine )  [...]

Laisser une réponse