Update / Select et Mysql
34 messages • Page 1 sur 3 • 1, 2, 3
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Update / Select et Mysql
Bonjur à toutes et tous,
Un petit problème compliqué pour moi. Je vous explique.
J'ai une requete SELECT machinchose... elle s'affiche en 0,18. Ce SELECT est en fait une requête qui ne doit se calculer qu'une seule fois. Imaginez vous dans une file d'attente. Donc on ne la traite qu'une fois. Mais pdt ce laps de temps, 0,18, d'autres connectés ont pu lancer la meme requête... et donc je me retrouve avec deux personnes pour la même place dans la file d'attente. Génant. Surtout quand ils commencent à s'engueuler
Pour l'instant, après le SELECT et le 0,18, j'applique un UPDATE sur la table pour éviter le pb du "après le 0,18"... en effet, ensuite ca fait tourner une tite moulinette... genre on va le placer à la bonne table, on lui apporte le menu, etc... donc mon pb se retrouve donc limiter à ces 0,18
J'ai réfléchi sur le UPDATE SELECT... mais le pb c'est que j'ai besoin de récupérer des infos du SELECT, donc il me faudrait plutot un SELECT UPDATE
Alors si vous avez une tite idée, ce serait bien venue
Marchi
Un petit problème compliqué pour moi. Je vous explique.
J'ai une requete SELECT machinchose... elle s'affiche en 0,18. Ce SELECT est en fait une requête qui ne doit se calculer qu'une seule fois. Imaginez vous dans une file d'attente. Donc on ne la traite qu'une fois. Mais pdt ce laps de temps, 0,18, d'autres connectés ont pu lancer la meme requête... et donc je me retrouve avec deux personnes pour la même place dans la file d'attente. Génant. Surtout quand ils commencent à s'engueuler
Pour l'instant, après le SELECT et le 0,18, j'applique un UPDATE sur la table pour éviter le pb du "après le 0,18"... en effet, ensuite ca fait tourner une tite moulinette... genre on va le placer à la bonne table, on lui apporte le menu, etc... donc mon pb se retrouve donc limiter à ces 0,18
J'ai réfléchi sur le UPDATE SELECT... mais le pb c'est que j'ai besoin de récupérer des infos du SELECT, donc il me faudrait plutot un SELECT UPDATE
Alors si vous avez une tite idée, ce serait bien venue
Marchi
- audit.referencement
- WRInaute occasionnel

- Messages: 123
- Inscription: Sam Fév 16, 2008 17:14
J'avoue que je n'ai pas tout compris, tu n'as pas la possibilité de faire une vue avant ton select pour éviter le problème ?
audit.referencement a écrit:J'avoue que je n'ai pas tout compris, tu n'as pas la possibilité de faire une vue avant ton select pour éviter le problème ?
en fait j'ai avancé... il faut que je verrouille la vue pdt que je la fais via un FOR UPDATE... seul soucis... mon MySql a pas l'air d'aimer le FOR UPDATE
j'ai bien peur qu'avec du mysql standard tu ne puisses rien faire, myIsam ne propose pas de verrou sur une ligne par contre si tu peux passer ta table en innodb tu as l'instruction select for update qui réalise exactement ce que tu veux faire c'est à dire verrouiller la donnée tant que l'update n'est pas passé...
+ d'infos ici
+ d'infos ici
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
pas tout compris. les transactions peuvent pas t'aider ?
julienr a écrit:j'ai bien peur qu'avec du mysql standard tu ne puisses rien faire, myIsam ne propose pas de verrou sur une ligne par contre si tu peux passer ta table en innodb tu as l'instruction select for update qui réalise exactement ce que tu veux faire c'est à dire verrouiller la donnée tant que l'update n'est pas passé...
+ d'infos ici
Arf c bien ce que j'étais en train de capter. Oui la table est en MyISAM mais je peux la modifier en innodb. Y'a pas un risque dans ce genre de modif ?
pas tout compris. les transactions peuvent pas t'aider ?
Les trucs avec les lock ? je suis en train de regarder par là aussi
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
"Y'a pas un risque dans ce genre de modif"
Jamais testé de conversion par contre les sauvegardes doivent être faites proprement, les cc de fichiers ça ne marche plus trop notamment en cas de changement de version.
Certaines requêtes peuvent ralentir, aussi (WHERE), vu qu'il y a plus de contrôle dans InnoDB.
Jamais testé de conversion par contre les sauvegardes doivent être faites proprement, les cc de fichiers ça ne marche plus trop notamment en cas de changement de version.
Certaines requêtes peuvent ralentir, aussi (WHERE), vu qu'il y a plus de contrôle dans InnoDB.
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
finstreet a écrit:Les trucs avec les lock ? je suis en train de regarder par là aussi
En général, j'ai testé ça via des frameworks, type Zend, l'usage est très simple, tu dois juste encadrer tes requêtes par deux instructions.
http://www.linuxfrench.net/article.php3?id_article=652
Par contre, pas sûr sûr que ça réponde à ton besoin...
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
Pour les LOCK
http://dev.mysql.com/doc/refman/5.0/fr/lock-tables.html
EDIT-
Pour les transactions
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
De ce que je comprends, si LOCK te convient, les transactions doivent te convenir aussi.
Par contre, je ne suis pas sûr que ça bloque la lecture...
http://dev.mysql.com/doc/refman/5.0/fr/lock-tables.html
EDIT-
Pour les transactions
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html
De ce que je comprends, si LOCK te convient, les transactions doivent te convenir aussi.
Par contre, je ne suis pas sûr que ça bloque la lecture...
Dernière édition par ecocentric le Jeu Fév 28, 2008 15:49, édité 1 fois.
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
julienr a écrit:il n'y a pas d'index fulltext en innodb
Bien vu, je confirme.
bon je suis passé en innodb sur deux tables... oui en plus dans le select y'a une jointure lol ... et sans succès
A chaque fois j'ai un "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..."
le FOR UPDATE il se met après le LIMIT ? après le ORDER ? après toutes les clauses WHERE ? j'ai tout testé lol
A chaque fois j'ai un "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..."
le FOR UPDATE il se met après le LIMIT ? après le ORDER ? après toutes les clauses WHERE ? j'ai tout testé lol
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
Si c'est un système d'id de file d'attente, tu ne peux pas t'en sortir en faisant un id=id+1 dans ton update ou via un autoincrement et un lastinsertid ?
C'est peut-être très c** ce que je dis mais j'essaie de piger ton problème.
C'est peut-être très c** ce que je dis mais j'essaie de piger ton problème.
34 messages • Page 1 sur 3 • 1, 2, 3
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Passage à l'heure d'été/hiver sur un forum phpBB
- Google Update Jagger : étape 2 sur 3
- Historique des "Google Update"
- Des changements dans l'algorithme de Google ? (22 février 2007)
- Gestion des langues et des sessions en PHP / MySQL
- La mise à jour du mois de juillet arrive...
- La Google Dance Gilligan n'en était pas une
- API Blogger : Google Data API
- Outils Google pour les entreprises : Google Agency Toolkit
- De la publicité ciblée dans les cartes de Google Local
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum