IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vitesse de calcul MySQL Vs PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Par défaut Vitesse de calcul MySQL Vs PHP
    Bonjour,

    Par soucis de performance dans mon code, j'aimerais poser une question simple mais néanmoins problématique.

    La situation est la suivante : J'aimerais réaliser une série de calcul complexe comprenant des boucles, des appels a la base de donnée, des algorithmes, et l'utilisation de certaines fonctions comme la fonction RANDOM par exemple.

    Tout ces calculs sont réalisé sur des données déjà stockée dans la base de données, et ces données devront être mis à jours après le calcul.

    Ma question est donc la suivante, que dois-je choisir entre :

    - Créer une fonction PHP qui va prendre les données brut de la base, réaliser la suite de calcul, puis update les données sur la base.

    - Créer une procédure stockée directement sous MySQL qui s'occupe de prendre les données, de faire les calculs et d'update a la fin du calcul. ( La procédure stockée est alors appelée par PHP ou grâce à un trigger )

    Ma suite de calcul prenant actuellement déjà plusieurs secondes pour se réaliser ( c'est actuellement un calcul réalisé dans une fonction PHP ), j'aimerais vraiment connaitre la méthode la plus performante.

    Merci

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Bah si ça prend déjà plusieurs seconde en php, ça va être simple de comparer.

    Tu fait la même chose en procédure stocké et tu compare le temps d'exécution des 2 méthodes :/

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    En PHP, je pense que tu dois faire ceci :
    1) Récupérer les données dans la BDD ==> 1 requête
    2) Pour chaque ligne résultat
    a) Faire le calcul
    b) Mettre à jour la BDD ==> Autant de requêtes que de lignes

    Si les calculs sont réalisables en SQL, il est préférable de les confier au SGBD parce qu'il va travailler en une seule passe sur l'ensemble de la table.
    1) Lancement de la requête de mise à jour comprenant les calculs ==> 1 requête
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Par défaut
    Très bien, merci.

    Donc si je comprends bien.. Tout les calculs faisable sous MySQL doivent être fait ainsi..
    Dois-je comprendre que la vitesse de calcul de MySQL est supérieure a celle de PHP ?

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce n'est pas exactement ça mais un SGBD est optimisé pour traiter de grandes masses de données. Les fonctions de calcul sur ces données sont donc aussi optimisées.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Par défaut
    Ok, encore une fois merci pour vos réponses.

    Par contre, je suis quelqu'un de perfectionniste donc j'aimerais une ultime réponse pour m'assurer d'avoir bien compris les choses.

    La raison principale pour laquelle je demande une (re)confirmation est parce que ma fonction en question est très longue a coder.. Cela impliquera donc de prendre beaucoup de temps pour la porter en procédure stockée..

    De plus je pense après relecture qu'il y a peut-être eu un malentendu.

    Les calculs en question ne sont pas à réaliser sur toute les lignes d'une table. En faite ils ne concernent qu'une vingtaine de lignes spécifiques de la table.

    Voici le calcul actuel sous PHP :

    Etape 1 : Je récupère une 100taine de colonnes sur les lignes de mes tables concernées.
    Etape 2 : Je les modifies avec certains calculs impliquant des randoms, des switchs, des boucles..etc ( cela prends déjà plusieurs secondes )
    Etape 3 : J'update les lignes en question.

    ( Il ne faut pas oublier que la base doit être disponible pendant les calculs bien entendu )

    Donc en gros ma question est bel et bien portée sur la rapidité de calcul de MySQL par rapport a PHP... La base de donnée n'étant sollicitée que au début et à la fin de la fonction.

    Cette fois je ne demande qu'un "Fait le en procédure stockée" ou un "Fait le en PHP" ^^.

    Merci une dernière fois !

Discussions similaires

  1. Export MySql en php
    Par pierre50 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/08/2010, 13h46
  2. Migration MySql 4 - Php 5 : connaitre fonctions obsolètes
    Par chris-ren dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/02/2006, 11h48
  3. MySql et PHP : valeur NULL
    Par fffonck dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/02/2006, 17h02
  4. Installer apache, mysql et php sur une red hat 9 !
    Par Ruddy16 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 07/11/2005, 21h41
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo