|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 138 ![]() |
Bonjour à vous tous et puis meilleurs voeux
,une question que je me pose depuis quelques jours maintenant et à laquelle je n’arrive pas à répondre correctement. Tout d’abord mon problème : J’ai une base de donnée MySQL que plusieurs utilisateurs peuvent consulter et modifier. Or, dans mon programme une modification requiert plusieurs requêtes SQL … d’où: comment éviter qu’un deuxième utilisateur (ou plus) ait accès aux champs en cours de modification par le groupe de requêtes ? En d’autres termes j’aimerais que les groupes de requêtes se succèdent et qu’elles ne se chevauchent pas J’espère que je suis assez clair Voici les quelques solutions que j’ai trouvées et qu’il va falloir que je creuse, mais je voudrais savoir si je prend la bonne voie : - L’utilisation des transactions (SET TRANSACTION …) en verrouillant les tables concernées (LOCK TABLE …) avec le niveau ACCESS EXCLUSIVE. - L’utilisation d’un SELECT … FOR UPDATE ; cette requête bloque bien que les lignes sollicitées mais ne concerne pas un groupe de requêtes.Bref, je suis pour l’instant dans la recherche des meilleurs compromis pour ce type de problème. Il me semble que l'utilisation des LOCK TABLE (sans l'utilisation des TRANSACTIONS) et sur des tables utilisant le moteur myISAM est une voie intéressante ... mais j'en suis pas sûr. Pourriez-vous svp me dire si je prend le bon train et me donner quelques informations bien distillées Merci d’avance ! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Set transaction est bien utilisé par les tables InnoDB. Les tables InnoDB, gérant les transactions sont moins rapides en effet que les tables myIsam qui ne gèrent pas tous ces aspects. (Logique
Mais les fonctions LOCK TABLE peuvent être utilisés avec les tables MyIsam. A mon avis , le LOCK est une bonne solution. Vous lockez Vous lancez vos requêtes Vous délockez Mais attention Pendant le verrou, les utilisateurs concurrents auront un message d'erreur de type "Table verrouillée" Il faut donc le gérer
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2006 Messages : 138 ![]() |
Ok, toutefois il me semblait que les utilisateurs étaient en attente le temps que le verrou soit levé. De toute façon je vais tester ça ... merci pour avoir répondu aussi rapidement
Je marquerais ce post comme résolu plus tard dans la semaine ... on sait jamais si je trouve des infos complémentaires Merci pour votre réponse et bon week end ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com