Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 10h41   #1
Membre habitué
 
Inscription : décembre 2008
Messages : 417
Détails du profil
Informations personnelles :
Âge : 26
Localisation : Tunisie

Informations forums :
Inscription : décembre 2008
Messages : 417
Points : 147
Points : 147
Envoyer un message via MSN à jaljal
Par défaut Plus de 1000 exec simultanés d'une requête

Bonjour,

Je voudrais optimiser l'exécution de la requête suivante (php/mysql):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
<?php
$req = "select nextServer from servers where id = 1";
		$res=mysql_query($req);
		$row = mysql_fetch_row($res);
 
		switch ($row[0]) {
 
			case 2 :
			$server = "server1";			
			$req = "update servers set nextServer = 3 where id = 1";
			$res=mysql_query($req);
			break;
 
		   case 3 :
		    $server= "server2";			
			$req = "update servers set nextServer = 4 where id = 1";
			$res=mysql_query($req);
		   break;
 
			case 4 :
			$server= "server3";			  
			$req = "update servers set nextServer = 2 where id = 1";
			$res=mysql_query($req);
		   break;
 
		   DEFAULT :
			$server= "server4";
		   break;
		}
?>
l'utilité de ce script est de récupérer le nom du serveur sous cet order server1->server2->server3

pour un accés qui dépasse les 4000 utilisateur dans la page php contenant ce script, mon serveur plante !

Comment faire pour optimiser ma requête ?

Merci
__________________
There is more than one way to do it
jaljal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 10h55   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

A quoi sert cet algo en fait ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 10h57   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Essaie cette requête :
Code :
1
2
3
4
5
6
7
UPDATE servers
SET nextServer = 
	CASE 
		WHEN nextServer = 4 THEN 2
		ELSE nextServer + 1
	END
WHERE id = 1
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h06   #4
Membre habitué
 
Inscription : décembre 2008
Messages : 417
Détails du profil
Informations personnelles :
Âge : 26
Localisation : Tunisie

Informations forums :
Inscription : décembre 2008
Messages : 417
Points : 147
Points : 147
Envoyer un message via MSN à jaljal
Citation:
Envoyé par punkoff Voir le message
Bonjour,

A quoi sert cet algo en fait ?
cet algo va me permettre d'accéder à une ressource partagée sur plusieurs serveur, donc de gagner en bande passante ... (ma propre implémentation de l'algo Round-robin )



Merci CinePhil pour le script envoyé

Sinon, est ce qu'on pourrait exécuter une requête mysql en queue (pas plus d'une seule exécution simultanée de la requête )
__________________
There is more than one way to do it
jaljal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 12h09   #5
Membre du Club
 
Homme Frédéric
Inscription : juin 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 53
Points : 53
Points : 53
Bonjour,

Pour faire du load balancing sur 4 serveurs (de ce que j'en ai compris), j'aurais plutôt eu tendance à utiliser une variable globale sur laquelle j'aurai fait un ++, ou un truc du genre (j'y connais rien en PHP):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
	switch(round(microtime(true)*1000)%4) {
      case 0:
        $server="server1";	  
		break;
      case -1:
      case 1:
        $server="server2";	  
		break;
      case -2:
      case 2:
        $server="server3";	  
		break;
      case -3:
      case 3:
        $server="server4";	  
		break;
	}
Fred_34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 16h01   #6
Membre habitué
 
Inscription : décembre 2008
Messages : 417
Détails du profil
Informations personnelles :
Âge : 26
Localisation : Tunisie

Informations forums :
Inscription : décembre 2008
Messages : 417
Points : 147
Points : 147
Envoyer un message via MSN à jaljal
Merci Fred_34 pour le partage, je vais opter pour ta méthode, j'aurais plus besoin d'utiliser une connexion de base de données pour ça
__________________
There is more than one way to do it
jaljal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h30.


 
 
 
 
Partenaires

Hébergement Web