|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Débutant
Inscription : mars 2008 Messages : 691 ![]() |
bonjour
voila, j essaye de locker ma table, et j ai une methode qui me dit comment faire : "dans les cas où vous voulez faire de nombreuses INSERT et SELECT sur la même table, vous pouvez insérer les lignes dans une table temporaire, et ne modifier la table réelle que de temps en temps, à partir de la table temporaire. " et donc faire ceci mysql> LOCK TABLES real_table WRITE, insert_table WRITE; mysql> INSERT INTO real_table SELECT * FROM insert_table; mysql> TRUNCATE TABLE insert_table; mysql> UNLOCK TABLES; mais bon, voila, en gros noob de mysql, je pose tout de meme ma question : quand faut il faire ca dans mon code? a chaque insert? au debut de chaque page? a chaque update? a la creation de la bdd? help me siouplais !!!
__________________
« Pour garantir la sécurité dans la continuité et la stabilité, la République sera bientôt réorganisée et deviendra la Première Puissance Galactique Impériale ! Pour une société fondée sur l’ordre et la sécurité ! » |
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 986 ![]() |
Normalement tu n'as besoin de le faire dans ces conditions là surtout que cela ne sert à rien.
Mysql gère le lock de table de manière automatique. Cela dépend du moteur utilisé mais MyISAM c'est fait automatiquement, je ne suis pas sur mais je confonds avec le moteur InnoDB. Par contre, je te déconseille de te lancer dans la gestion de lock de table ainsi. Il faut l'utiliser dans des cas très spécifiques qui peuvent critique. Exemple quelqu'un fasse une gestion de caddie. La table peut être locké sur les commandes pour la disponibilité du produit. Vous imaginez s'il restait qu'un produit et que deux personnes possèdent ce produit dans leurs panier. Au moment de la commande il faut pouvoir verrouiller la table des disponibilités le temps du traitement SQL. Si pendant le processe de validation l'autre utilisateur passe commande. Il n'aura pas accès à la table, il va attendre qu'elle soit dévérouillé. Par la suite la commande va être annulé parqu'au final le produit n'est plus disponible. Bref, c'est utile dans ce genre de scénario très sensible.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#3 |
|
Débutant
Inscription : mars 2008 Messages : 691 ![]() |
merci!
donc j ai cas passer de MyISAM -> InnoDB et c est tout? c est pour un jeu en ligne. donc si 50 utilisateurs en meme temps touchent a la table membre, il faut un lock non?
__________________
« Pour garantir la sécurité dans la continuité et la stabilité, la République sera bientôt réorganisée et deviendra la Première Puissance Galactique Impériale ! Pour une société fondée sur l’ordre et la sécurité ! » |
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 986 ![]() |
Non, ne change pas de moteur pour ça. Il me semble et je suis plus sur mais InnoDB gère le lock de table.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
00
|
|
|
#5 |
|
Débutant
Inscription : mars 2008 Messages : 691 ![]() |
ok, merci donc je passe en InnoDB de suite
a plus!
__________________
« Pour garantir la sécurité dans la continuité et la stabilité, la République sera bientôt réorganisée et deviendra la Première Puissance Galactique Impériale ! Pour une société fondée sur l’ordre et la sécurité ! » |
|
00
|
Copyright © 2000-2012 - www.developpez.com