Actualites��Archives
Diffusez votre communiqué de presse
�Inscription | Plan du site | 37� visiteurs actifs �
��
���� A la Une
� Actualit�s
� Dossiers
� Coin Technique
� Agenda des salons
� Outils Web

���� R�f�rencement
� R�f�rencement professionnel
� Liens commerciaux
� Devis r�f�rencement

���� Diagnostic
� Popularit� Site Web
� Positionnement Moteur
� WebPage Alerte
� Positionnement Google

���� Archives
� S�lection
� Exp�rience qui parle
� Internet quotidien
� Tous les dossiers

���� Services
� Mise en conformit� de site
� H�bergement
� Communiqu�s de Presse
� Contenu �ditorial
� Webmastering

���� Contact
� Nous contacter
� La protection des donn�es personnelles

���� Technique
� Merise

���� Login
���
����
Inscription

Mot de passe oubli�?

�� Sondage
Les points que vous souhaitez voir traiter � l'avenir ?
4%Actualit�
29%Documentation
52%Exemples de sources
3%Liste de liens
11%Revue logiciels

�� Sondage
Vous vous int�ressez plut�t �
77%Programmation
10%Syst�me
9%Logiciel
5%Mat�riel

�� Sondage
votre niveau technique ?
15%Amateur
44%D�butant
33%Professionnel
7%Expert

���� Rechercher
����
���

�Coin Technique


Merise: 8�me Partie

Il est maintenant temps de regarder comment fonctionne le moteur de la base de donn�e et d'optimiser les requ�tes SQL. En effet, il est possible de gagner consid�rablement en ressources machines rien que sur une optimisation du code SQL. L� encore, il n'est pas question de magie, mais de bien comprendre comment cela fonctionne, et d'utiliser � propos les outils choisis, en l'occurrence les bases de donn�e, qui sont tr�s co�teuses en ressources syst�mes. Bien sur, elles nous rendent de fiers services mais leur utilisation abusive (ou maladroite) peut provoquer de forts ralentissements, voir m�me crasher le serveur. Il faut donc �tre tr�s pr�cautionneux de ce que l'on va demander � l'outil. Comme d'habitude, il faut d�finir une architecture en ad�quation avec ses besoins, et l'utiliser le plus � propos possible.

ECONOMISER LA MACHINE, C'EST EN FAIT POUVOIR LUI EN DEMANDER PLUS

Un h�bergeur Fran�ais bon march�, tr�s populaire chez les informaticiens et proche d'un fournisseur d'acc�s gratuit � Internet, nous l'a cruellement rappel� � la fin de l'ann�e derni�re. Fournissant des h�bergements mutualis�s (plusieurs sites par machines), il s'est retrouv� avec certains sites reposant int�gralement sur des requ�tes SQL lourdes voir inutiles, fausses, et surtout lanc�es � tors et � travers. Certains de ces sites sont devenus un peu connus, ont commenc� � faire de l'audience, et ont finalement faillis faire chavirer l'ensemble de la plate-forme d'h�bergement. Les bases de donn�es, surcharg�es, refusaient souvent de se lancer et de r�pondre aux requ�tes, et renvoyaient r�guli�rement des messages d'erreurs � tous les utilisateurs. Aux heures de pointes, les sites n'�taient parfois m�me plus consultables. Inutile de dire que la cr�dibilit� d'un site internet affichant des erreurs d'acc�s � la base SQL est s�rieusement entam�e, et que de nombreuses personnes ont du reprendre leur d�veloppement. Pour que le site Internet tienne la charge quand il commence � �tre fr�quent�, il vaut mieux qu'il repose sur des fondations solides tant mat�rielles que logicielles. Quant � cet h�bergeur, il a du refondre son architecture mat�rielle, mais a aussi perdu une grande part de sa cr�dibilit� et de sa client�le...


MODELISONS UN CATALOGUE : REVISIONS DE LA TECHNIQUE...

Syst�me d'Information (SI) : Arborescence en Arbre...

Un garagiste expose sur le Web ses mod�les, afin de pr�senter ses nouveaut�es et surtout son stock en temps r�el (disponibilit� de ses mod�les). Il utilise ce que l'on app�le un catalogue, sans caddy ni paiement en ligne (ce sont des voitures...), mais avec navigation par cat�gorie/sous-cat�gorie, affichage de la fiche-produit de la voiture, et possibilit� de recherche par marque de v�hicule. Il limite sa fiche produit au nom, au prix, et � la disponibilit� de la voiture (on simplifie...). Ce qui donne :

Un Produit poss�de 1 ou plusieurs Cr�ateurs (marques, fabricants). Un Cr�ateur fabrique 0 ou plusieurs Produits. Ces Produits appartiennent chacun � une et une seule Cat�gorie. Chaque Cat�gorie contient 0 ou plusieurs Produits. Enfin, une Cat�gorie peut avoir 0 ou plusieurs sous-Cat�gories, chaque Cat�gorie ayant 0 ou une Cat�gorie parente.

D'o� le MCD :



Qui entra�ne le MLDR :

CREATEUR (ID_CREATEUR, NOM_CREATEUR)
FABRIQUE (ID_CREATEUR, ID_PRODUIT)
PRODUIT (ID_PRODUIT, #ID_CATEGORIE, NOM_PRODUIT, PRIX_PRODUIT, DISPONIBLE)
CATEGORIE (ID_CATEGORIE, #ID_PAR_CATEGORIE, NOM_CATEGORIE)


Qui g�n�re le MPD :


POUR SE PROTEGER, IL FAUT BIEN COLMATER LES JOINTURES !!!

Prenons une requ�te d'extraction toute simple, et regardons ce qu'il se passe : On recherche les mod�les disponibles de V�hicules de marques "Peugeot" de type "D�capotable", et leur prix. L'identifiant ID_CREATEUR de "Peugeot" est ici "4", et l'identifiant ID_CATEGORIE de "D�capotable" est "10".

SELECT *
FROM PRODUIT, FABRIQUE
WHERE PRODUIT.ID_CATEGORIE='10'
AND FABRIQUE.ID_CREATEUR='4'
AND PRODUIT.ID_PRODUIT=FABRIQUE.ID_PRODUIT

Regardons maintenant ce que fait le moteur de la base :

1�) Celui interpr�te la requ�te ligne par ligne. Pour commencer, il met dans un tableaux tous les �l�ments de PRODUIT et de FABRIQUE, en faisant ce que l'on appelle un produit cart�sien : c'est � dire que pour chaque enregistrement de la premi�re table rencontr�e, ici PRODUIT, il mettra en face tous les enregistrements de la seconde table rencontr�s un par un, et ce pour chaque ligne. Si PRODUIT contient 250 enregistrements, et FABRIQUE 110, cette table temporaire et interm�diaire comprendra 250*110=27500 lignes.

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit disponible � id_createur id_produit
1 3 103SP 55 000 Y � 4 2
1 3 103SP 55 000 Y � 4 11
... ... ... ... ... � 8 15
... ... ... ... ... � ... ...
1 3 103SP 55 000 Y � 33 18
2 10 205 Blue 83 000 Y � 4 12
2 10 205 Blue 83 000 Y � 4 11
... ... ... ... ... � 8 2
... ... ... ... ... � ... ...
2 10 205 Blue 83 000 Y � 33 18
etc... etc... etc... etc... etc... � etc... etc...


2�) Puis, il supprime de cette m�me table temporaire les valeurs de id_cat�gories diff�rentes de '10'.

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit disponible � id_createur id_produit
2 10 205 Blue 83 000 Y � 4 2
2 10 205 Blue 83 000 Y � 4 11
... ... ... ... ... � 8 15
... ... ... ... ... � ... ...
2 10 205 Blue 83 000 Y � 33 18
etc... etc... etc... etc... etc... � etc... etc...


3�) Ensuite, il supprime de cette m�me table temporaire les valeurs de id_createur diff�rentes de '4'.

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit disponible � id_createur id_produit
2 10 205 Blue 83 000 Y � 4 2
2 10 205 Blue 83 000 Y � 4 11
... ... ... ... ... � ... ...
etc... etc... etc... etc... etc... � etc... etc...


4�) Enfin, il effectue la jointure demand�e, et ne garde que les lignes dont PRODUIT.ID_PRODUIT=FABRIQUE.ID_PRODUIT .

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit disponible � id_createur id_produit
2 10 205 Blue 83 000 Y � 4 2
etc... etc... etc... etc... etc... � etc... etc...


5�) Eventuellement, si il le lui avait �t� demand�, c'est � ce stade qu'il aurait interpr�t� les commandes des instructions GROUP BY, puis HAVING et enfin ORDER BY. Toutefois, il est int�ressant de constater que toutes les colonnes sont pr�sentes dans le tableaux, et que l'on a pass� en m�moire � peu pr�s 100 fois l'int�gralit� de la quantit� de donn�es contenues dans ces seules tables.

Imaginez un peu si le garagiste avait eu 100 000 Voitures r�parties dans 250 Cat�gories, avec � peu pr�s 970 marques diff�rentes ?


"F� PAS GACHER", COMME DIRAIT L'AUTRE...

Reprenons la m�me requ�te, mais formul�e un poil diff�remment :

SELECT PRODUIT.NOM_PRODUIT, PRODUIT.PRIX_PRODUIT
FROM PRODUIT, FABRIQUE
WHERE PRODUIT.ID_PRODUIT=FABRIQUE.ID_PRODUIT
AND PRODUIT.ID_CATEGORIE='10'
AND FABRIQUE.ID_CREATEUR='4'

Regardons ce que fais le moteur de la base :

1�) Tout d'abord, il r�cup�re dans un tableaux les �l�ments de PRODUIT demand�s et ceux n�cessaires pour la requ�te, fais pareil pour FABRIQUE, et la jointure �tant sp�cifi�e en premier, il ne prend que les lignes dont PRODUIT.ID_PRODUIT=FABRIQUE.ID_PRODUIT .

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit � id_createur id_produit
2 10 205 Blue 83 000 � 4 2
3 10 M�gane 83 000 � 8 3
5 15 4L ME 83 000 � 4 5
... ... ... ... � ... ...
etc... etc... etc... etc... � etc... etc...


2�) Il enl�ve les lignes dont id_categorie n'est pas �gal � '10'

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit � id_createur id_produit
2 10 205 Blue 83 000 � 4 2
3 10 M�gane 83 000 � 8 3
... ... ... ... � ... ...
etc... etc... etc... etc... � etc... etc...


3�) Puis celles o� id_createur n'est pas �gal � '4'

PRODUIT � FABRIQUE
id_produit id_categorie nom_produit prix_produit � id_createur id_produit
2 10 205 Blue 83 000 � 4 2
... ... ... ... � ... ...
etc... etc... etc... etc... � etc... etc...


4�) Enfin, il ne garde que les colonnes demand�es dans la requ�te, c'est � dire le nom, et le prix.

205 Blue 83 000
... ...
etc... etc...


Si j'avais su, par exp�rience ou connaissance du contexte, que la clause FABRIQUE.ID_CREATEUR='4' �tait plus r�ductrice en terme d'�l�ments que la clause PRODUIT.ID_CATEGORIE='10' , je l'aurais alors mise avant celle ci, afin de r�duire le plus possible le nombre d'�l�ments stock�s en m�moire, et donc les op�rations n�cessaires pour les tris et traitements ult�rieurs.

Il est int�ressant de remarquer que pour un obtenir un r�sultat similaire, on a beaucoup moins tir� sur la machine, qui pourra donc accomplir cette requ�te un plus grand nombre de fois simultan�ment, et donc accueillir un plus grand nombre de visiteur sans souffrir...


QUI VEUT ALLER LOIN, MENAGE SA MONTURE

Sans tomber non plus dans l'int�grisme inutile du coupeur de cheveux en 4, il est tout de m�me tr�s clair que la simple formulation de la requ�te SQL est lourde de cons�quence sur les ressources et le temps machine n�cessaire pour sa simple ex�cution. On peut ainsi citer quelques pr�cautions simples qui all�geront simplement la charge reposant sur le serveur :

  • Mettre les jointures en premier :
    Si n tables, alors (n-1) jointures.


  • Placer les comparaisons les plus restrictives le plus t�t possible :
    cela fera toujours autant de lignes qui ne seront plus en m�moire, et que l'ordinateur n'aura plus � traiter dans le reste de sa requ�te.


  • EVITER ABSOLUMENT "SELECT * FROM ..." :
    Ne demandez que les colonnes n�cessaires, c'est toujours �a de moins � garder en tableaux apr�s la requ�te, et donc cela �conomise la m�moire. De plus, si un jour vous d�placez votre code, et que deux colonnes se trouvent invers�es dans la nouvelle base, cela n'aura aucune cons�quence pour votre d�veloppement.


  • Comparer des colonnes de m�me type :
    Un CHAR(150) est consid�r� du m�me type qu'un VARCHAR(150), mais diff�rent d'un CHAR(152) ou d'un VARCHAR(148). Cela oblige le moteur de base de donn�e � effectuer des conversions internes.


  • Formuler les clauses de comparaison le plus pr�cisement possible :
    En particulier, �viter de mettre des % partout dans les clauses LIKE, c'est tr�s lourd � traiter...


  • Mettre les identifiants en INT, et en AUTOINCREMENT :
    L'avantage principal de l'autoincrement est que pour chaque cr�ation d'enregistrement ne comprenant pas d'office son identifiant, le moteur se charge lui-m�me de lui en attribuer un [du type max(id) 1], ce qui �vite des manipulations suppl�mentaires.


  • Utilisez des INDEX :
    Mais l'explication, l�, ce sera pour la prochaine fois....

A bient�t...

<< Lire la 7�me partie

St�phane Lambert
http://www.vediovis.fr/

Sp�cialis� dans le d�veloppement Web, St�phane LAMBERT
a fond� VEDIOVIS PRODUCTIONS en Mai 2000.
Son exp�rience couvre essentiellement les sites � fortes audiences,
institutionnels ou audiovisuels.

�

Tous droits r�serv�s - Reproduction m�me partielle interdite sans autorisation pr�alable

�Imprimer�Donner votre avis

Les r�actions


mmmmmmmmmmm
par�[23.02.2005�16:24 - tetam]
c extraordinaire ce travail

NO COMMENT
par�[23.02.2005�13:20 - Salma Bougrini]
Tr�s riche et tr�s bien fait toute mes f�licitations.

merci
par�[22.02.2005�11:45 - tetam]
c'etait vraiment 1 travail de genie

fantastique
par�[16.02.2005�23:17 - humain]
c'est tout simplement g�nial.Quel effort!!!Dieu te benisse.

bravo
par�[15.02.2005�20:05 - raben]
bravo mais mon prof a deja pris les exemples, vais devoir en trouver ailleurs ^^

:o
par�[04.01.2005�23:12 - Axe]
Un document de qualit�

Excellent Travail
par�[04.01.2005�17:05 - Daoud]
Mille Mercis

Excellent travail , claire et pr�cis et un exemple � suivre pour exposer une information de cette qualit�
Encore Bravo !

MERCI
par�[19.11.2004�09:40 - Steph]
Merci pour ce cours !
Je suis �tudiante et cela me fait un support clair et pr�cis parfait !
A quand la partie suivante, puisque les INDEX indiquent : "Utilisez des INDEX :
Mais l'explication, l�, ce sera pour la prochaine fois.... " ? :-)

FORMIDABLE !!!
par�[28.10.2004�22:29 - Mimi]
C'est vraiment extra de mettre � dispo autant d'explications.
Le travail est remarquablement clair du d�but � la fin et d'une ( grande )qualit� toujours �gale.
Bravo.

Un exemple pour tous !!!

F�licitations !

Excellent
par�[09.09.2004�17:36 - nen]
Excellent mais tout � fait surprenant. J'en ai plus appris sur les m�canismes de requ�tes SQL que sur Merise.
Le travail n'en reste pas moins remarquable en tous points.

mer�i
par�[15.06.2004�13:51 - Na�ma]
Ce que tu donnes est � toi pour toujours. Ce que tu gardes est perdu � jamais.
si tout le monde adopter ce concept...

P.A.R.F.A.I.T
par�[06.05.2004�05:49 - Arnaud]
Tout simplement parfait !
Tant au niveau de la vulgarisation-sans toutefois perdre au niveau de la qualit�e-, qu'au niveau de votre d�marche didactuelle qui est sans conteste "captivante"
J'ai suivit ce cours durant tout une nuit et je ne le regrette pas !
Ca donne envie d'utiliser Merise !!!!

PS : Si vous poss�der d'autres articles, je vous serai infiniment reconnaissant si vous pouviez mes donner quelques liens

MAIL : [email protected]

Merci d'avance ......

Excellent!!!
par�[29.04.2004�18:12 - LANSKY]
Tr�s pratique ce cours sur MERISE qui m'a permi de d'actualiser mon analyse informatique.
Merci pour les efforts que vous faites pour r�pandre les connaissances dans le monde qui est entrain de se tranformer en un petit village gr�ce � INTERNET.

REMERCIEMENT
par�[25.04.2004�19:54 - xxxx]
SENEGAL
MERCI d'avoir offert de la mati�re grise au tiers monde

merci mille et mille fois
par�[28.03.2004�10:58 - sabrina]
je voudrais te remercie au nom de tous les utulisateurs de ce programme je vous tire chapeau
c'est vraiment extra a merci ,thank you very much

Merci
par�[18.02.2004�09:54 - Samy]
Merci de nous avoir fait profiter de ton exp�rience. C�est un cours qui traite l�essentiel et d�une fa�on tr�s claire.
Samy

le bien vaincre le mal
par�[06.02.2004�16:34 - maroc- yassine]
filicitation
je voudrais te dire q'un seul mot "sup"
vous avez fait de bien pour tous...
merci et bon courage

cours merise
par�[06.02.2004�11:23 - leila]
F�licitations a l'auteur . pr�cis, clair concis , pas de superflu . merci pour votre altruisme .

Remerciement
par�[04.02.2004�15:36 - MTD]
Bonjour,
Je tiens � vous remercier pour toutes les parties.

MAROC
par�[05.12.2003�22:50 - ENNAJEM]
je voudrais te tiens fort au personne charger de

cette information vraiment g�niale je suis tr�s

content de l'avoir enregistrer merci bcp et bon

courage.

SUPER
par�[15.07.2003�08:22 - djamy]
Ecoute, j'ai qu'un mot � dire "chapeau".
puis comme l'explication est tr�s clair et interresante j'aimerai bien voir la suite(generalisation, sp�cialisation, MCT...)
Merci

Grand Merci...
par�[15.05.2003�11:09 - Til.B]
Je tiens � f�liciter l'auteur car ce cours va bien m'aider pour mon �preuve de BTS IG de demain...

En effet Merise est au programme et j'ai retrouv� dans ce dossier tout ce dont j'avais besoin..!

Encore merci et bonne continuation

attente...
par�[15.05.2003�01:38 - lo]
Si si !! vraiment bien!! mais j'attends la suite maintenant!! ;)

BRAVO
par�[28.04.2003�03:14 - belnad]
Vos articles sont magnifiques, cela m'a permis de compl�ter mes connaissances en treme de MERISE, si vous pouvez en faire de m�me avec les nouveaux concepts(g�n�ralisation, sp�cialisation, merise orient� ogjet) �a sera g�nial,grand merci....

Merci
par�[03.04.2003�14:29 - Nico]
Merci beucoup pour ce site sur Merise.
J'ai quelques notions apprises durant ma formation mais ce site est vraiment tr�s interessant et m'a permis d'�claircir tous les points qui me semblaient flous dans ce domaine.
Encore MERCI.

avis
par�[15.03.2003�17:44 - savon]
Assez clair et bien present� que demander de mieux
a quand le mct?

une requ�te
par�[06.03.2003�16:26 - framy]
Puis-je avoir des exemples de grands projets men�s avec MERISE?
Merci de m'en envoyer � [email protected]

Un guide telechargable
par�[04.03.2003�21:42 - hugo]
Stephanie, Felicitation pour cette compilation d'article sur merise. Dommage qu'elle ne soit pas telechargable en un coup.
En ce qui concerne merise, la methode est malheureusement pas passee outre atlantique. Ici, aux states, on parle UML. Peut etre pourait tu consacrer un article ou deux sur ce qui les unies.
Un bonjour de Californie. :-)
[email protected]

EXCELLENT
par�[05.02.2003�11:40 - SAMIR]
Je trouve ton site Super, �a me sauve la vie d'autant plus j'ia un test demain MERCI!!

Marseille
par�[30.01.2003�11:27 - B�n�]
Je vous dis tout simplement BRAVO pour ce pr�cieux travail.� bient�t.

Chapeau!
par�[08.01.2003�17:41 - fanie007]
Tout simplement g�nial!!!!!
F�licitations pour ce site extra!!

merise
par�[19.12.2002�10:49 - sliman]
Exelent travail c'est tres beau qu'au point on attend avec impatience la suite de l'article la partie 9 Bon courage et merci encore

f�licitation
par�[04.11.2002�10:43 - franck]
j'�tai � la recherche d'exemples sur merise pour structurer un cours .

Explication tr�s claire

TR�s bon travail

Bravo
par�[25.10.2002�22:46 - Infoman]
Bravo, rien a dire sur l'ensemble du cours, ca m'a beaucoup aide. Mais, mais eh oui le fameux mais... Si seulement on pouvais avoir le format chargeable ca aurait ete mieux et + souple.
Encore une fois bravo et merci.

PRESTALOG
par�[16.07.2002�17:49 - Eric ]
Tr�s bonne synth�se de l'analyse via Merise.
F�licitation.

bravo
par�[15.07.2002�16:15 - gilou]
les 8 parties sont vraiment trs interessantes
bravo!!

Actualit�s du Net

�
�� Sondage
Selon vous, quel est le meilleur moyen d�obtenir du trafic sur un site internet ?
21%Les liens commerciaux
61%Le r�f�rencement naturel
10%Les banni�res de publicit�
3%La publicit� hors ligne
5%Les communiqu�s de presse

�� Archives
� Structurer correctement un document XML�
� Il est temps de passer au XHTML 1.0�
� Votre premi�re page XHTML 1.0�
� Les expressions r�guli�res�

�

Sam-Mag - Un site du r�seau ACORUS 1996-2007
� Copyright ACORUS All rights reserved.- Mentions l�gales

Ce site respecte la loi Informatique et Libert�s. Pour en savoir plus sur la protection des donn�es personnelles, cliquez

r�f�rencement | achat de mot cl� | r�f�rencement international | web actualit�s | boutique en ligne | statistiques web | referencement site web
communiqu� de presse | r�f�rencement internet | r�f�rencement gratuit | referencement professionnel | referencement immobilier

�
Webmaster