paralleliser mes requetes SQL

paralleliser mes requetes SQL - PHP - Programmation

Marsh Posté le 11-06-2015 à 15:48:24    

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
Reply

Marsh Posté le 11-06-2015 à 15:48:24   

Reply

Marsh Posté le 12-06-2015 à 14:05:04    

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

Reply

Marsh Posté le 12-06-2015 à 15:28:36    

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
Reply

Marsh Posté le 12-06-2015 à 18:36:56    

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
Reply

Marsh Posté le 12-06-2015 à 19:02:44    

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
Reply

Marsh Posté le 15-06-2015 à 00:55:48    

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
Reply

Marsh Posté le 15-06-2015 à 10:38:58    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed