N’oublie pas l’indexation

Une notion que certains développeurs oublient parfois et une erreur de débutant que je vois régulièrement dans des scripts open source. Je vais prendre l’exemple (simplié a l’extrème) d’un blog avec des articles et des categories. J’ai une table avec un champ texte qui contient le texte de mon article, un identifiant (clé primaire) de l’article et une catégorie pour classer l’article (sous forme d’entier).

La création de la table donne ca :

  1. CREATE TABLE `test_index` (`id` INT NOT NULL ,`texte` TEXT NOT NULL ,`categorie` INT NOT NULL ,PRIMARY KEY ( `id` )) ENGINE = MYISAM ;

Tout va bien la plupart du temps mais quand la base commence a prendre du volume, certaines pages deviennent lentes. Dans notre cas, il s’agit de la page par categorie, c’est à dire la page qui regroupe tous les articles d’une même categorie.

La raison de cette lenteur est simple, MySQL est obligé de parcourir toute la table pour extraire les articles de la catégorie désirée.

Il faut donc ajouter un index sur le champ categorie pour accélérer les requetes du type

  1. SELECT * FROM test_index WHERE categorie='1';

Comment ajouter un index avec une commande MySQL :

  1. ALTER TABLE `test_index` ADD INDEX ( `categorie` )

Comment ajouter un index avec PHPMyAdmin :

1. Je choisis ma table

2. je vais dans le menu Structure

3. Je clique sur créer 1 index :

4. Je choisis « categorie » comme champ sur lequel je crée l’index.

5. Je clique sur Save pour enregistrer

6. Je vois la requete de création de l’index

7. mon index est affiché parmis la liste des index

Toutes mes requètes possibles sont optimisés :

  1. SELECT * FROM test_index WHERE id='2';
  2. SELECT * FROM test_index WHERE categorie='6';

Dernière remarque : il n’est jamais trop tard pour créer un index ! la création sera peut-être un peu plus longue que sur une table vide mais ce n’est pas interdit
« Il n’est jamais trop tard pour bien faire »

Règles pour de meilleures performances

La performance est un de mes chevaux de bataille, chaque développeur devrait lire les 13 règles pour une meilleure performancede Yahoo

Voici la conférence de Steve Souders (Chief Perfomance chez Yahoo!)

Steve Souders a aussi écrit un livre « High performance Web site », le livre sort le 21/09 et j’ai fait la précommande. je parlerai donc de ce livre ici.

Youtube… en savoir plus

Depuis hier, vous avez commencer à mettre en place votre site de vidéo en ligne. Tout marche à la perfection mais avez-vous pensé à tout ? je ne sais pas…La référence en la matière est Youtube

Pour en savoir plus, sur l’architecture de Youtube, je vous propose de lire cet article High Scalability Youtube. Il donne un aperçu de l’architecture de ce site.

Il est important de penser dès le début à la montée en charge (redondance et multi-serveur). Il faut se poser les bonnes questions :

  • Ou est la limite de mon application ?
  • Quand mon serveur sera à saturation, comment inclure un deuxième serveur ?

Il vaut mieux avoir une idée dès le début sur ce genre de question, sinon il faudra complétement repenser l’application pour la montée en charge…. Souvent le fait de changer le serveur pour un plus puissant ne sera une solution qu’à court terme….



Check out our best movie collection. Latest CD, DVD, HQ DVD movie downloads. Buy and download movies instantly.