|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 2 ![]() |
Bonjour tous le monde,
Je suis en train de tester MySQL pour son support des transactions avec les tables InnoDB et j'ai une petite question. J'ai fait un petit programme qui tourne sur deux machines et qui se connecte sur une DB MySQL, je fais un SELECT ... FOR UPDATE sur une table et retire le cable réseau de la machine. Lorsque le prochain user tente un SELECT ... FOR UPDATE il est bloqué, il n'y a jamais de rollback sur ma transaction. Est-ce que quelqu'un sait ce qu'il faut configurer dans la DB pour ne pas rester dans ce dead lock? Quelqu'un a-t-il déjà fait ce test et est-il satisfait du résultat? Je me connecte avec ODBC. merci, Chromium. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Cela doit dépendre de divers timeout, à commencer par celui qui indique à partir de quand la connexion est considérée comme morte.
Les variables innodb_lock_wait_timeout et connect_timeout ont l'air intéressantes. |
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 2 ![]() |
Citation:
J'ai déjà testé innodb_lock_wait_timeout il n'arrête pas la transaction responsable du dead lock mais seulement celle qui est en attente sur la row qui a été verrouillé (et dont la connection réseau a été interrompue). Il existe une option dans le clustering qui permet de mettre un timeout sur une transaction en cours, par exemple s'il n'y a pas eu de commit avant 5 secondes à partir de ton Begin Transaction, Mysql Annule tout simplement la transaction. C'est ce que je recherche mais sans dévoir installer la gestion des Clusters. J'ai aussi regarder connect_timeout, mais il ne me sert à rien. Chromium. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com