Se connecter / S'enregistrer
Votre question

SQL et multibase

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
14 Mars 2009 21:35:21

Bonjour,

Depuis 2 semaines je cherche à faire une requête SQL SELECT pour récupérer des données sur deux base de donnés distinctes.

J'ai réussi à bidouiller un bout de code qui donne ça:



  1. <?php
  2. mysql_connect("localhost", "root", "123456");
  3. mysql_select_db("");
  4.  
  5.  
  6. $reponse = mysql_query("SELECT * FROM DB2.pages")
  7. or die("Erreur SQL : $query<br/>".mysql_error());
  8.  
  9. $reponse2 = mysql_query("SELECT * FROM DB.pages")
  10. or die("Erreur SQL : $query<br/>".mysql_error());
  11.  
  12.  
  13. while (($donnees = mysql_fetch_array($reponse) ) AND ($donnees1 = mysql_fetch_array($reponse2) ))
  14. {
  15.  
  16. echo $donnees['name'];
  17. echo $donnees1['name'];
  18. echo "<br>";
  19.  
  20.  
  21. }
  22.  
  23. mysql_close(); // Déconnexion de MySQL
  24. ?>



Le problème est que cela m'affiche seulement les résultats de la première requête(la base de donne DB2)

Comment afficher tout les résultats?
Si quelqu'un à une autre idée... Merci


Autres pages sur : sql multibase

14 Mars 2009 23:07:03

Question, pourquoi deux bases ?
14 Mars 2009 23:10:45

car la première est trop chargée ..
Contenus similaires
15 Mars 2009 01:14:41

Qu'appel tu trop chargé ?
Nombre de table / enregistrement ? Poids ?

Mutu ou dédié ? Quel type de matériel ?
15 Mars 2009 11:18:59

22 tables
La plus importante a 573 453 enregistrements. (taille : 215,9 Mio)
Elle est mise à jour tout les jours.
Serveur dédié chez OVH: kimsufi (L) avec Release 2

Processeur:
Intel
Celeron D/215/220
1.20+ GHz
32 / 64 bits

Mémoire vive:
1 Go
DDR 1/2


Disque dur:
250 Go

Connexion réseau:
100 Mbps

Le problème se pose lors d'une requête INSERT dans la table de 573 453 enregistrements.
Elle est très longues à se faire.
15 Mars 2009 12:00:16

as tu des graph de monitoring ?
munin ou mrtg sur le load du dédié ou du load de mysql.

as tu déja des optimisations du my.cnf pour mysql ?
il s'agit d'un forum (ou autre script portail etc) ou d'un site coder ?
as tu des index sur tes tables ?

pour ton script d'affichaqe, quels sont les infos que tu essaient d'affiché ? car cela reste très vague avec ton exemple.

pour régler ton probleme, il faut que tu fasse une jointure avec condition, en te connectant d'abord à tes deux bases.

cependant, premiere chose à faire, regler ton probleme de lenteur, ton script est t'il beaucoup solicité ? Si tu as fait toute sorte d'optimisation au niveau de la config mysql, envisage de prendre une machine plus puissante.

et pour ton probleme, vers la fin de la page :

http://www.commentcamarche.net/forum/affich-849465-mysq...


et sur un autre forum j'ai trouvé ceci :

SELECT gmp.gestiut_profs.Nom AS nomprof,vt.enseignements.nom AS nomenseignement
FROM gmp.mabase
LEFT JOIN vt.uneautre ON (vt.uneautre.codeSeance=gmp.mabase.idSeanceVt)
LEFT JOIN vt.encoreune ON (vt.encoreune.codeEnseignement=vt.uneautre.codeEnseignement)
WHERE
(gmp.mabase.idAbsence
IN (SELECT MAX(gmp.mabase.idAbsence)
FROM gmp.mabase
GROUP BY gmp.mabase.idSeanceVt, gmp.mabase.idSuivre_semestre)
)
AND gmp.mabase.idSuivre_semestre=:idSuivre_semestre
15 Mars 2009 12:02:07

Et surtout, ne pas se connecter en root sur la base ...Cree un seul user limité que tu attribura a tes deux bases (necessaire a priori pour ce que tu cherche à faire, mais jamais tester, c'est d'après le topic que je t'ai donné au dessus)
15 Mars 2009 12:21:51

Merci pour ta réponse.

Le script est un comparateur de prix (affilistore) j'ai beaucoup de produits sur la table produits et donc en partageant les produits sur deux base de données les requêtes serons plus rapide (j'ai testé)
Je n'est pas fait d'optimisation car je ne connais pas trop les config mysql.
J'ai une clé primaire sur champ ID de la table produits

Le bou de code que j'ai posté c'est juste pour testé.
Voila les graf du serveur:

trafic


Paquets



15 Mars 2009 12:30:41

Ok, mais mysql peut supporté énormément de trafic sans devoir diviser en base supplémentaire, si tu as de fort ralentissement, c'est soit :

- la machine qui n'est pas assez puissante maintenant
- le script qui prend trop de ressource car mal optimisé
- penche toi sur l'optimisation de mysql (comme tu es sur un dédié, direction serveur ovh, plein de topic existe)
- si tu ne surveille pas ton serveur, il a peut etre une charge elevé, ce qui expliquerais tes ralentissement.

quand je parlais de load, ce n'est pas la bande passante, mais le load (charge) de la machine en elle meme, c'est à dire ton kimsufi.

Si tu es sous débian, tu as juste à taper : aptitude install munin munin-node (assure toi d'avoir apache2 dessus).

5 min après, les premier graph seront généré, et accessible a : tonipdukimsufi/munin

tu aura le load de la machine, et des stats de tes requete SQL, ce qui pourra déja nous aider d'avantage. cependant, je te conseil d'aller poster sur les formu kimsufi d'ovh tu aura plus de réponse la bas pour l'optimisation de ton serveur, une fois optimisé, il ne te reste plus qu'a remettre tes deux bases en une, ce que tu fais ne résoudera pas le probleme de lenteur, meme si tu en a l'impression.

si tu fais un "top" sous ssh, quel sont les valeurs ?
15 Mars 2009 12:37:08

Le top donne cela:

top - 12:35:13 up 17:06, 1 user, load average: 0.02, 0.02, 0.07
Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0% us, 0.3% sy, 0.0% ni, 99.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 1023976k total, 576252k used, 447724k free, 28860k buffers
Swap: 522104k total, 11008k used, 511096k free, 299068k cached


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 1480 480 448 S 0.0 0.0 0:00.58 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 15 -5 0 0 0 S 0.0 0.0 0:00.44 ksoftirqd/0
5 root 15 -5 0 0 0 S 0.0 0.0 0:00.03 events/0
6 root 15 -5 0 0 0 S 0.0 0.0 0:00.08 khelper
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 kstop/0
140 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kstop/0
140 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
141 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
142 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
143 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
199 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
200 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
201 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
206 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
209 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS