Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

optimisation requete sql sur mutualisé

Aller à la page 1, 2  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Jeu Juin 10, 2004 21:49    Sujet du message: optimisation requete sql sur mutualisé

Bonsoir,

deja les caracteristiques:

mon site est dc en mutualisé ainsi pas acces au php.ini

Apache/1.3.29 (Unix) PHP/4.3.3

Zend Optimizer
Optimization Pass 1 enabled
Optimization Pass 2 enabled
Optimization Pass 3 enabled
Optimization Pass 9 disabled
Optimization Pass 10 disabled
Zend Loader enabled

-> eventuellement pour compresser ??

HTTP_ACCEPT_ENCODING gzip, deflate .

Il est en urlrewriting.


Voila donc mon pb ... les pages s affichent en 15s suite a l insertion de pas mal d enregistrements dans ma bdd.

Ainsi, ce que j'ai fait suite a ça:

Arrow Division de la page en plusieurs pour alleger la page. ( au depart 300ko!)

Arrow Modif requete du genre SELECT * en SELECT nomchamps

Je ne sais pas trop quelle est la fonction la plus rapide sur une requete sur une table qui fait des requetes sur les champs d un table de poids env 1,4 Mo (pour l instant, mais qui augmente..) 3 600 enregistrements pour l instant avec 24 chps differents.

Je ne peux pas utiliser de "cache", car la page se modifie toute seul Crying or Very sad

Es ce que la compression gzip pourrai aider?

Quelle sont les façons les plus souples a mettre en oeuvre?

merci de precieux conseils
 
achaternet Visiter le site web du posteur
iconso
WRInaute impliqué
WRInaute impliqué

Inscrit le: 08 Avr 2003
Messages: 443
Localisation: Loire Atlantique

URL permanente de ce messagePosté le : Jeu Juin 10, 2004 23:01    Sujet du message: optimisation requete sql sur mutualisé

Tu parles de 15 secondes pour affichers une page, il faut savoir si ce temps est destiné à générer la page (requete SQL notamment) ou à la transmettre au navigateur :
- Si génération : ca me parait peu probable vu le faible nombre d'enregistrement dans ta base, mais dans ce cas ton script (ou requete) doit être défaillant quelque part
- Si transfert : alors la compression va pouvoir t'aider, et éventuellement un passage en CSS2 pour ceux qui ne supportent pas cette compression...

Fred
 
iconso Visiter le site web du posteur
jeroen
WRInaute accro
WRInaute accro

Inscrit le: 30 Aoû 2002
Messages: 2318

URL permanente de ce messagePosté le : Jeu Juin 10, 2004 23:07    Sujet du message: optimisation requete sql sur mutualisé

essaie de faire
Code:

<?php
function getmicrotime()
   {
   list($usec, $sec) = explode(" ",microtime());
   return ((float)$usec + (float)$sec);
   }
...
...
$temps_debut = getmicrotime();
... (ta requête sql)
$temps_fin = getmicrotime();
...
print "requête en ".round($temps_fin-$temps_debut,3)." secondes";


pour voir le tps exect de ta requete uniquement.
Perso j'ai des requêtes qui puisent sur 3 tables de 500 Ko chacunes, et ç ne dure que 1/10 ème de seconde (a peu pres).

A tu mis des INDEXS ?
 
jeroen
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Ven Juin 11, 2004 0:59    Sujet du message: optimisation requete sql sur mutualisé

iconso a écrit:
Tu parles de 15 secondes pour affichers une page, il faut savoir si ce temps est destiné à générer la page (requete SQL notamment) ou à la transmettre au navigateur :
- Si génération : ca me parait peu probable vu le faible nombre d'enregistrement dans ta base, mais dans ce cas ton script (ou requete) doit être défaillant quelque part
- Si transfert : alors la compression va pouvoir t'aider, et éventuellement un passage en CSS2 pour ceux qui ne supportent pas cette compression...

Fred


Comment distinguer? le fait de separer les 2 et ainsi tester chacun, ainsi de comparer le temps total et temps unique de la requete?

Arrow Deja ok, vais tester cela, ça me renseignera plus

et le calcul du temps precis avec par expl le code de jeroen

Citation:
A tu mis des INDEXS ?


cad, c quoi??
 
achaternet Visiter le site web du posteur
iconso
WRInaute impliqué
WRInaute impliqué

Inscrit le: 08 Avr 2003
Messages: 443
Localisation: Loire Atlantique

URL permanente de ce messagePosté le : Ven Juin 11, 2004 1:18    Sujet du message: optimisation requete sql sur mutualisé

Oui, la solution de jeroen te permettra de mesurer le temps de génération précisément. Tu peux effectivement séparer les deux et le mesurer de manière plus approximative en n'affichant pas tes données (et que tu n'auras donc pas a transmettre au navigateur), ou en appelant ta page HTML générée après l'avoir sauvegardée et tranférée sur ton serveur, selon ce que tu veux mesurer.

Un index de base de données fonctionne un peu comme une table des matières, et permet d'accélerer l'accès aux données. Son principal inconvénient réside dans le ralentissement de l'ajout et MAJ des données de ta base.

Fred
 
iconso Visiter le site web du posteur
Xethorn
Nouveau WRInaute

Inscrit le: 10 Juin 2004
Messages: 40

URL permanente de ce messagePosté le : Ven Juin 11, 2004 7:09    Sujet du message: optimisation requete sql sur mutualisé

Bonjour,
Pourquoi ne pas utiliser un système de cache ? ça pourrait faire gagner du temps et éviter des requêtes inutiles ...
@tcho
Xethorn
 
Xethorn Visiter le site web du posteur
sietjp
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Déc 2003
Messages: 614
Localisation: Paris

URL permanente de ce messagePosté le : Ven Juin 11, 2004 10:28    Sujet du message: optimisation requete sql sur mutualisé

Il faut mettre des INDEX sur les champs sur lesquels tu fais des recherches intensives.
 
sietjp Visiter le site web du posteur
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Ven Juin 11, 2004 21:50    Sujet du message: optimisation requete sql sur mutualisé

Xethorn a écrit:
Bonjour,
Pourquoi ne pas utiliser un système de cache ? ça pourrait faire gagner du temps et éviter des requêtes inutiles ...
@tcho
Xethorn


Parce les pages sont ne sont statiquent mais DYNAMIQUE,

ainsi, il faudrait un truc du genre maj auto par expl 2 fois par jour, c relou


sietjp a écrit:

Il faut mettre des INDEX sur les champs sur lesquels tu fais des recherches intensives.


Rolling Eyes ça m en dit pas bcp plus, j ai deja fait modif sur toutes mes requetes qui avait SELECT * par SELECT nom_chps, c est ça que tu parles sietjp et jeroen Question


Bon là enfin ce soir, je peux faire le test de la durée des 2 tests, dans qq minutes, je vous tiens au courant des resultats Wink
 
achaternet Visiter le site web du posteur
George Abitbol
WRInaute accro
WRInaute accro

Inscrit le: 06 Juin 2003
Messages: 1922

URL permanente de ce messagePosté le : Ven Juin 11, 2004 22:20    Sujet du message: optimisation requete sql sur mutualisé

Concernant les INDEX :

http://www.google.com/search?hl=fr&ie=ISO-8859-1&c2coff=1&q=mysql+op...
http://www.phpinfo.net/articles/article_optimisation-mysql.html

Fred
 
George Abitbol Visiter le site web du posteur
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Ven Juin 11, 2004 22:23    Sujet du message: optimisation requete sql sur mutualisé

Voici les resultats concernant une execution classique de la page, mais en lancant la fct temps de jeroen en differentes etapes d executions des requetes sql de la page.

Je sais deja, par rapport a mes requetes que le plus lourd en requetes est entre calcul I et calcul II

Neanmoins, on constate, que plus il y a d enregistrements dans la table et plus
le delai entre calcul0 et calcul I est important et tant a se rapproche du temps d execution de cacul I a calcul II


158 enregistrements
requête en 0.025 secondes jusque calcul 0
requête en 0.202 secondes jusque calcul I
requête en 0.786 secondes jusque calcul II
requête en 0.83 secondes jusque calcul III


678 enregistrements
requête en 0.041 secondes jusque calcul 0
requête en 2.226 secondes jusque calcul I
requête en 3.525 secondes jusque calcul II
requête en 3.569 secondes jusque calcul III


930 enregistrements
requête en 0.062 secondes jusque calcul 0
requête en 4.92 secondes jusque calcul I
requête en 8.025 secondes jusque calcul II
requête en 8.072 secondes jusque calcul III
 
achaternet Visiter le site web du posteur
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Ven Juin 11, 2004 22:41    Sujet du message: optimisation requete sql sur mutualisé

...

ou là là, avec bcp plus d enregistrements, c flagrant:


3 629 enregistrements
requête en 0.913 secondes jusque calcul 0
requête en 111.607 secondes jusque calcul I
requête en 111.609 secondes jusque calcul II
requête en 118.597 secondes jusque calcul III

Shocked Shocked Shocked

Au moins je sais quelle requete optimiser, mais bon, je ne peux pas faire bcp plus simple de ce côté Sad , comment faire alors Question

vais approfondir les index merci fred pour les precisions dessus


Dernière édition par achaternet le Ven Juin 11, 2004 22:43; édité 1 fois
 
achaternet Visiter le site web du posteur
jeroen
WRInaute accro
WRInaute accro

Inscrit le: 30 Aoû 2002
Messages: 2318

URL permanente de ce messagePosté le : Ven Juin 11, 2004 22:43    Sujet du message: optimisation requete sql sur mutualisé

Donne tes requêtes
 
jeroen
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Sam Juin 12, 2004 7:31    Sujet du message: optimisation requete sql sur mutualisé

yep,

ainsi donc voici la requete principale qui fait souffrir le serveur

qui correspond entre calcul 0 et calcul I, soit l essentielle du temps qd on constate sur un nb important d enregistrements.

Suite a vous precieux conseils, je vais finir d optimiser mes tables.

$kery = "SELECT DISTINCT nom FROM `$sstheme`".$query_add." ORDER BY nom";
$zult = mysql_query ($kery);
while($nprod = mysql_fetch_array($zult)) {
$pech=$nprod->nom;
$kery2 = "SELECT count(revend) FROM `$sstheme` WHERE nom = '$pech'" ;
$zult2 = mysql_query ($kery2);
list($nbre_revendus) = mysql_fetch_array($zult2);
}


Puis je utiliser les index là?

merci encore
 
achaternet Visiter le site web du posteur
Oncle Tom
WRInaute passionné
WRInaute passionné

Inscrit le: 31 Mar 2003
Messages: 808
Localisation: Bordeaux, France

URL permanente de ce messagePosté le : Sam Juin 12, 2004 10:40    Sujet du message: optimisation requete sql sur mutualisé

Mouarf c'est normal ... tu fais des requête imbriquées !!
Surtout faut pas faire ça.

Imagine que ta $kery retourne 150 résultats, elle va exécuter ensuite en dessous 150 requêtes SQL supplémentaires (qui seront balayées bien sûr). Y'a rien de mieux pour tuer le serveur.
Fais des jointures sur tes tables et tu pourras faire ça en 1 requête au lieu de plusieurs ...
 
Oncle Tom Visiter le site web du posteur
achaternet
WRInaute impliqué
WRInaute impliqué

Inscrit le: 11 Fév 2003
Messages: 251
Localisation: France

URL permanente de ce messagePosté le : Sam Juin 12, 2004 11:18    Sujet du message: optimisation requete sql sur mutualisé

The Jedi a écrit:
Mouarf c'est normal ... tu fais des requête imbriquées !!
Surtout faut pas faire ça.

Imagine que ta $kery retourne 150 résultats, elle va exécuter ensuite en dessous 150 requêtes SQL supplémentaires (qui seront balayées bien sûr). Y'a rien de mieux pour tuer le serveur.
Fais des jointures sur tes tables et tu pourras faire ça en 1 requête au lieu de plusieurs ...


Embarassed

Quel code serait plus "leger" en requete?

En fait la requete dessus permet de calculer tous les enregistrements dont ceux qui sont identique, cad aillant le meme nom dans la table.
 
achaternet Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 2 - Aller à la page 1, 2  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort