Jump to content

optimiser mysql et réorganiser


Recommended Posts

Bonjour,

voilà sur mon site, j'ai environ une cinquantaine de mysql_query envoyé par page ce qui me provoque en gros une aparition des pages en 0.5sec de temps de chargement ... et donc je me demandais quels méthodes pour diminuer au maximum ce temp ?

est ce que ouvrir et fermer mysql pour chaque requete l'optimise ?

j'utilise à chaque fois mysql_free_result

j'ai déjà lu beaucoup de sujets sur l'optimisation dont le sujet réalisé par online.fr

j'ai créer une indexation etc etc...

je ne vois pas comment l'optimiser plus en fait ^^ avez-vous des idées ? :)

merci d'avance ! :rolleyes:

Link to post
Share on other sites
Utilise des jointures MySQL, ça pompera moins de ressours (LEFT JOIN)

Encore faut-il pouvoir :whistling:

Il y a différentes pistes à explorer :

- la structure de ta base de données est-elle optimale ? ;

- l'hébergement de ton site : est-ce que le serveur est assez puissant ?

- est-ce que les 50 requète sont indispensables ? N'y a-t-il pas des pages (ou éléments de page) qui pourraient être générées à intervalle régulier ?

Je ne suis pas certain d'être exhuastif :blush:

Link to post
Share on other sites

S'il place une requête dans une boucle, ça pourrait laisser à croire que la jointure est possible...

Ou pas...

Sinon, il n'y a aussi l'erreur à pas faire pour optimiser une requête, c'est :

SELECT monchamps1, monchamps2 FROM matable

Et non

SELECT * FROM matable

Alors que la table comprend 50 champs...

Link to post
Share on other sites

je vais regarder les jointures ce soir, sinon en ce qui concerne l'optimisation basique j'ai déjà tout vu et tout travailler ...

par contre j'ai trouver un truc sympa en optimisation c'est le cache mysql ... je l'ai mis en place et mes 50 requetes différentes ont un temps d'execution divisé par 7 donc bien appréciable ... :)

en ce qui concerne le cache par exemple pour une nouvele news : je détruit le cache existant et j'en recréer un a chak nouvele news? c'est ce que je compte faire en tout cas

merci pour vos réponses

je me demandais d'ailleurs comment on faisait pour faire un cache mysql ? car je fait seulement un cache PHP pour le moment ' je met en cache ma page php sous forme html

Link to post
Share on other sites

Peut être qu'en passant en programmation objet, le temps de reponse sera meilleur. Chaque objet aura ses propres fonctions ( requete Select, suppr, replace into .. ) une fois un objet instancié tu n'a qu'a appelé la fonction correspondant à la bonne requete, sa t'évite d'avoir 10000 requetes php faisant la meme chose ^^ et instancié un objet permet de le garder en mémoire.

Tu peux toujours optimiser le temps dans le choix de tes fonctions php, voir : http://www.estvideo.com/dew/pages/phpbench/

Edited by Damien_
Link to post
Share on other sites

50 queries pour une page c'est considérable. S'agit-t'il à chaque fois de requêtes sur des tables différentes ?

Si c'est sur une même table il devrait être possible de regrouper les requêtes en une avec une clause WHEREIN puis faire une boucle pour l'affichage.

Link to post
Share on other sites

en fait là j'ai trouvé le système de cache fort intéressant, il réduit le temps d'exécution des pages par 7 ce qui est fort appréciable ... :)

mais je reste au demeurant toujours intéressé par une augmentation de rapidité et l'idée de la POO m'est fort appréciable, auriez-vous une doc suffisament compréhensible pour apprendre la poo ? car jusqu'à maintenant j'ai lu et bosser plein de trucs sur la poo mais jamais j'ai réussi a m'y mettre car trop flou :)

merci pour vos réponses !

Link to post
Share on other sites

la POO en PHP c'est pas forcément compliqué a comprendre mais débuter par ses propres moyen tu va galerer je pense. Mais si tu désire essayer .. aide toi avec ca et ca.

Pour moi le but de la POO est de séparer tout ce qui est requete et bdd du reste ( tableau, affichage .. )Une fois ta modélisation objet bien conçu, tu ne touche plus à la base de données .. Je m'explique.

tu auras tes fichiers d'objet ( contenant les fonctions de chaque objet ) et de l'autre coté tes fichiers qui te permette d'afficher tes pages dans lesquels se trouve tes appels de fonctions.

Pour t'aider à comprendre le fonctionnement :

dans mon fichier de scripts ' users ' j'ai une fonction suppr qui delete de la bdd un champ ..

function suppr(){
$query = "DELETE FROM `users` WHERE ID=" . $this->id;echo($query);
$this->con->query($query);
}

Dans ma page d'affichage j'ai un tableau d' user qui me permet grace à une croix sur chaque ligne du tableau de supprimer l'utilisateur corréspondant à la ligne.

Je donne à cette croix un lien: " index.php?page=utilisateur&id_user=$id_user &action=suppr"

Avec ce petit lien tout deviens simple, sachant que toutes mes fonctions sont dans un fichier ( select * , delete .. , insert into, chargement de tout les infos de mon objet user dans un tableau ... ) je n'ai pu à toucher a la base de données !!!

Je récuper le type d'action qui est afficher dans mon lien avec un $_GET, donc pour l'exemple l'action est suppr. Je fais :

include ('tonfichier_script_user');
$utilisateur=new user();
$utilisateur->id=$_GET["id_user"];

switch ($_GET["action"])
{ case "suppr": $utilisateur->suppr();break;
// la tu peut mettre d'autre fonction :)
}

Dans ce bout de code, j'instance un objet utilisateur de type user. utilisateur->id permet de dire que c'est la variable $id du script user que tu attribue à ton objet utilisateur.

Si je clic sur ma petite croix rouge je vais donc effectuer la fonction suppr ..

Je te laisse découvrir les créations de classes et d'instanciation.

Edited by Damien_
Link to post
Share on other sites

oui je comprend de mieux en mieux l'interet d'utiliser les class en php ... :) seulement pour débuter c'est assez chaud, j'avais déjà essayé il y a 6 mois mais j'ai finalement opter par flemme avec le procédural, là j'ai rebosser toute la journée sur la POO pour assimiler mieux le code, et je compte bosser ce soir sur une class pour essayer de me débrouiller, et en effet c'est bien plus pratique pour la réutilisation du code !

mais est-ce que cela va augmenter la rapidité du serveur ? ( même si je compte m'y mettre quand même :P ) ou est ce que ce n'est utile que pour un travail clean sur le code :)

merci pour l'exemple détaillé

Link to post
Share on other sites

Moins il y a de ligne dans ton code et plus le serveur sera rapide. Avoir 50 requêtes sur une page c'est surment que tu as mal pensé ta programmation, j'ai jamais vue ca moi :P en même temsp je suis qu'étudiant.

Mais une programmation objet te permet de modulariser ton code et ainsi rendre évolutif ton site.

voici les interêts de la POO en PHP.

Link to post
Share on other sites

j'ai recherché pas mal de code sources sur les class mysql et j'en ai trouver quelques uns fort sympathiques mais pas forcément ce que je cherchais est ce que quelqu'un en aurait un perso sur lequel je puisse un peu me rendre compte de comment faire :)

merci :P

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...