Tom's Guide > Forum > Programmation > SQL et multibase

SQL et multibase

Forum Programmation : SQL et multibase

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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:



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




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


Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Question, pourquoi deux bases ?

Répondre à okinou

car la première est trop chargée ..

Répondre à Oneilus

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

Mutu ou dédié ? Quel type de matériel ?

Répondre à okinou

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.


Message édité par Oneilus le 15-03-2009 à 11:20:41
Répondre à Oneilus

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/for [...] deux-bases

 


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


Message édité par okinou le 15-03-2009 à 12:04:58
Répondre à okinou

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)

Répondre à okinou

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
[img]https://www.ovh.com:444/94.23.13/33436499626.png[/img]

Paquets
[img]https://www.ovh.com:444/94.23.13/362119953471.png[/img]


Répondre à Oneilus

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 ?


Message édité par okinou le 15-03-2009 à 12:32:33
Répondre à okinou

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

Répondre à Oneilus
Tom's Guide > Forum > Programmation > SQL et multibase
Aller à :

Il y a 345 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens