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

SQL Procédural MySQL Discussion :

[DEBAT] fonctions Mysql vs fonctions PHP


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Par défaut [DEBAT] fonctions Mysql vs fonctions PHP
    Salut à tous,

    Je me demandais si parmi vous ils y en auraient des arguments ou expériences en faveur du formatage d'une date au niveau du serveur Mysql dans la requete , ou a contrario en faveur du traitement en PHP du jeu d'enregistrement via des fonctions comme date().

    en gros c'est quoi le préférable et dans quelles conditions (disons pour une machine mixte, ou a ressources égales si serveurs SQL et serveur web sont sur 2 machines distinctes) entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $SQL = "SELECT FROM_UNIXTIME(MON_CHAMP_TIMESTAMP, 'mon formatage')  ...
    [...]
    while($data = mysql_fetch_row....)
       print $data[0];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $SQL = "SELECT MON_CHAMP_TIMESTAMP  ...
    [...]
    while($data = mysql_fetch_row....)
       print date('formatage', $data[0]);


    Plus généralement je souheiterai savoir dans quels cas vous utilisez les fonction mysql et dans quels cas vous préférer les fonctions PHP.

  2. #2
    Membre Expert
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 291
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 291
    Par défaut
    Cela a des répercussions si tu fais des calculs sur les champs date.
    La charge incombera soit au serveur web, soit à la base.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Par défaut
    Salut Bidouille,

    oui je me doute, c'est pour cela que j'ai précisé "pour une machine mixte, ou a ressources égales si serveurs SQL et serveur web sont sur 2 machines distinctes".

    Mais puisque tu vas sur ce terrain justement à ressources égales, vaut-il mieux charger le serveur SQL ou le serveur web?
    Je pense que pour cette question la fiabilité et la performance pures des fonctions doit être déterminante (toujours indépendemment des ressources des serveurs).

    Pour ma part je vais tacher d'expérimenter des benchs de comparaison de méthode du genre ci-dessus (FROM_UNIXTIME vs DATE), dans des conditions ou aucun différentiel de ressources machine ne viendra parasiter l'interprétation.
    Le mieux c'est de faire ça dans des condition ou tout est en local sur une même machine.

    Peut être passerai-je néanmoins à coté d'une d'éventuels facteurs déterminants comme les contraintes de communication entre 2 machines (bande bassante etc.) ou l'une des méthode pourrait se montrer à son avantage selon qu'elle induira plus ou moins de flux entre les 2 machines...

    Bref je vous tiens au courant, et vos avis seront les bien venus.

  4. #4
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    Bonjour,

    J'avoue que j'utilise au maximum les fonction mysql dans mes query pour eviter de faire du traitement php (ex: format de date, calcul de unix_timestamp etc)
    Maintenant est ce que c'est mieux? Je ne pourrais te dire car je n'ai fait aucun bench, mais je me dis pourquoi faire un explode sur une date alors que mysql le fait avec le date_format
    Au sujet des performances, compare a un autre developpeur (a cote de moi) qui n'utilise jamais les fonction mysql, je n'ai pas vu une difference enorme, mais tes bench m'interresse.

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    j'ai tendance aussi a privilegier les fonctions mysql, meme si je les connais moins bien que celle de php, donc souvent j'ai toujours du boulot a faire en php que j'aurais pu faire en mysql ;o)

    Je ne pense pas que l'on puisse répondre simplement a ta question pour le cas général. Choisir de charger le serveur php ou la base est un choix a faire au cas par cas, ca depend de l'utilisation de chacun... Si tu as deja des traitement de 20secondes en php sans acces a la base, autant charger la base, et si tu as 50 requetes mysql pour une petite page php, autant les faires en php.

    A la limite le temps d'execution "pur" sur un environnement non chargé aura du sens, mais a mon avis la connexion et la charge SQL dépend de tellement de parametres dans un environnement de production qu'il sera difficile d'en déduire quelque chose...

    Je dirais que c'est le meme debat au fond que l'objet vs procédural. L'objet est souvent utilisé alors qu'il est legerement plus lent (j'veux pas lancer un troll, pas taper !) mais sa facilité de (ré)utilisation lui assure un large couverture d'utilisation.
    Pour moi c'est a la base d'en faire le maximum, car elle ne peux pas en faire "beaucoup" dans les traitement en général. Donc quand c'est possible je laisse la base le faire.

    De plus, les problemes d'optimisations sont les problemes des bases de données depuis le commencement, je pense donc qu'ils sont plus doués dans ce domaine que PHP qui est un langage relativement jeune.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Par défaut
    Salut vous 2,

    effectivement j'ai aussi tendance à essayer de régler un maximum de problèmes au niveau de la requête SQL en allant systématiquement chercher des solutions les plus directes et compactes possibles au niveau des possiblités SQL (fonctions, Join, Union etc.).
    De sorte qu'il me reste le moins possible à faire en PHP.

    Mais tu as raison Fladnag, Il y a trop de facteurs d'une prod à une autre, deplus, les process http qui finalement bossent en synchrone avec les process SQL sont de toute façon dépendant de ses derniers.
    Voila qui qui apparemment renvoie dos a dos les 2 stratégies entre charger le serveur SQL ou plus charger le serveur Web.

    Perso ca aurait tendance a me conforter dans l'idée de vouloir faire faire la besogne au serveur SQL à chaque fois que c'est possible pour la simple raison que les accès au serveur SQL ne constituent qu'une (parfois petite) partie des besoins du serveur web qui supporte "tout" le reste de l'appli.
    Le serveur SQL n'étant finalement qu'un sous-traitant d'une partie du travail (cela peut varier d'une appli a l'autre bien sur).

    En relisant le post de Fladnag, c'est d'ailleurs comme çà que je comprends :"Pour moi c'est a la base d'en faire le maximum, car elle ne peux pas en faire "beaucoup" dans les traitement en général. Donc quand c'est possible je laisse la base le faire." que j'approuve à 100%


    En ce sens, cela me semble plus être un rééquilibrage qu'un déséquilibrage vers le serveur SQL.

    Cette approche généraliste sur la gestions des ressources étant faite (et pas forcément close, bienvenue a tous) je reste très curieux de mesurer les performances pures des fonctions PHP d'un coté et Mysql de l'autre.

    je continue mon enquete et reste ouvert à des suggestions de protocoles expérimentaux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplacer des fonctions MySQL/PHP en Delphi
    Par Sundark dans le forum Débuter
    Réponses: 7
    Dernier message: 23/05/2008, 09h39
  2. [MySQL] exécuter un script php en commande linux : problème sur les fonctions mysql
    Par dr_octopus74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 16h34
  3. [MySQL] Fonctions MySQL dans PHP sans installation de MySQL
    Par linar009 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/01/2007, 14h57
  4. équivalent fonction mysql C en php
    Par splouf dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 22/01/2006, 19h41
  5. équivalent fonction mysql C en php
    Par splouf dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/01/2006, 14h23

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