Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
956 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  paralleliser mes requetes SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

paralleliser mes requetes SQL

n°2260171
PierreC
Posté le 11-06-2015 à 15:48:24  profilanswer
 

Bonjour à tous,
 
  Dans mon métier je traite un volume de données important avec du PHP / SQL .  
  J'ai des batch en PHP qui lance des requêtes SQL les unes à la suite des autres.
  Pendant longtemps le goulant d'étranglement des performances c'etait le disque dur. (I/O)
 
  A présent qu'on passe à des SSD, le goulot d'étranglement devient la fréquence du CPU. En effet une requête SQL n'utilise bien souvent qu'un seul CPU à la fois.
 
  Avant de réinventer la roue je viens donc ici poser ma question.
 
  Il faut que j'arrive à paralléliser mes requetes SQL . Mais pas toutes les requêtes. Je peux en lancer plusieurs en parallèle puis je dois à attendre la fin de certaine pour en lancer d'autre, etc, etc ...
 
Connaissez vous des outils (au mieux une libraire PHP) pour gérer un plan d'exécution de mes requêtes ? (sorte d'ordonnanceur)
 
Merci
 
Pierre


Message édité par PierreC le 11-06-2015 à 15:48:43

---------------
Du tofu en Alsace : www.tofuhong.com
mood
Publicité
Posté le 11-06-2015 à 15:48:24  profilanswer
 

n°2260216
antac
..
Posté le 12-06-2015 à 14:05:04  profilanswer
 

Déjà tu utilises quel SGBD ? :??:

n°2260222
rufo
Pas me confondre avec Lycos!
Posté le 12-06-2015 à 15:28:36  profilanswer
 

Si ton pb est réellement les requête sql, c'est peut-être le moment soit de changer de SGBDR (j'imagine que tu es sous Mysql, un Oracle serait peut-être plus performant) soit de passer sur du NoSQL ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2260233
PierreC
Posté le 12-06-2015 à 18:36:56  profilanswer
 

oh rufo .. tj le même pour répondre à mes question tordu :-)
 
je suis en effet sur du mysql, et même du myisam (innodb en étude, en même temps que le passage à mariadb)
Oracle : trop chère.
Le NoSQL à été étudié, on en à un peu sur certain projet très lourd (plusieurs centaine de millions de lignes), mais très difficile de le déployer dans tout nos projets (pour info on utilise monetdb, pas très connu comme base, mais avec des perfomances très impressionnante, tout en restant sur du SQL standard)
Dans le même genre il y a aussi postgres que tu n'as pas cité.
 
Mais toutes ces solutions ont déjà été étudiés avec soin et c'est un autre débat.
 
Mon besoin pour l'instant est de pouvoir paralléliser des requêtes SQL. Par exemple certain de nos serveurs ont 32 CPU et 12 disques SSD en raid, mais un seul CPU est utilisé et les disques s'ennuie. En lançant 2 requêtes SQL simultanément, je double tout simplement la vitesse de traitement, pour un coût de développement très faible et sans changer de SGBD . (et on pourrait passer à 4 simultanément pour saturer les SSD)
 
la solution serait un vrai ordonnanceur, mais je me demande s'il n'y en à pas orienté base de données


---------------
Du tofu en Alsace : www.tofuhong.com
n°2260234
rufo
Pas me confondre avec Lycos!
Posté le 12-06-2015 à 19:02:44  profilanswer
 

T'as regardé l'outil de Joce ?
http://forum.hardware.fr/hfr/Progr [...] 2180_1.htm


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2260324
czh
Posté le 15-06-2015 à 00:55:48  profilanswer
 

Pour faire bosser des scripts PHP à la volée, j'utilise beanstalkd ( http://kr.github.io/beanstalkd/ ). Un script produit des tâches, puis N-scripts simultanément en exécution piochent une tâche dans la pile. Seulement, il n'y a pas de base de notion d'ordonnancement, et c'est du pur asynchrone. Il y a d'autres systèmes capables de faire du multi-tâches synchrone mais je ne les connais pas (j'en ai seulement entendu parler.)
Après avec beanstalkd, il y a toujours moyen de faire de la tâche à état et du reduce à la main mais ce n'est de base pas prévu pour ça.
 
edit: termes utiles à rechercher : mapreduce, hadoop, hive


Message édité par czh le 15-06-2015 à 01:14:46
n°2260335
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2015 à 10:38:58  profilanswer
 

Je pensai aussi au MapReduce quand je proposais du NoSQL, mais ça va nécessité une réécriture de l'appli, assez conséquente je pense.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  paralleliser mes requetes SQL

 

Sujets relatifs
Connexion a SQL via Entity Framework[Oracle] PL/SQL, curseurs
[SQL/PLSQL] problème sur requêteLecture Flux XML, Doublon et ressources SQL
[SQL/SQL Server] Date maximale pour calcul suivant une cat/agent[Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?
[SQL] Aide requête avec enregistrement facultatifRequête SQL Update dans PHP
[Access/SQL] Comparaison de tables[Réglé] [SQL] Update après un select
Plus de sujets relatifs à : paralleliser mes requetes SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR