03-01-2013, 01:41 PM
Le terme français pour Deadlock est "interblocage".
L'article correspondant de Wikipedia explique simplement ce phénomène.
D'une manière générale, les transactions peuvent s'empiler et se dépiler sans problème.
Le Deadlock est un cas bien particulier qui, même s'il est lié aux transactions et aux verrous, n'apparait que si certaines conditions sont présentes.
Maintenant, concernant les verrous de MySQL, pour ce que j'en sais, si tes tables sont en format de stockage MyIsam, les verrous sont posés sur les tables entières uniquement. Avec InnoDB, les verrouillages sont effectués au niveau de la ligne et peuvent être partagés (read) ou exclusifs (update/delete).
Tu peux également influer sur le niveau d'isolation des transactions avec SET TRANSACTION ISOLATION LEVEL pour éviter les verrouillages intempestifs lors des lectures ou au contraire t'assurer de la bonne cohérence des données.
Et pour tenter de répondre à ta question principale qui est :
Ça dépend de la manière dont tes transactions sont imbriquées, à quel niveau de profondeur se situe le deadlock la manière dont l'erreur est gérée, etc.
L'article correspondant de Wikipedia explique simplement ce phénomène.
D'une manière générale, les transactions peuvent s'empiler et se dépiler sans problème.
Le Deadlock est un cas bien particulier qui, même s'il est lié aux transactions et aux verrous, n'apparait que si certaines conditions sont présentes.
Maintenant, concernant les verrous de MySQL, pour ce que j'en sais, si tes tables sont en format de stockage MyIsam, les verrous sont posés sur les tables entières uniquement. Avec InnoDB, les verrouillages sont effectués au niveau de la ligne et peuvent être partagés (read) ou exclusifs (update/delete).
Tu peux également influer sur le niveau d'isolation des transactions avec SET TRANSACTION ISOLATION LEVEL pour éviter les verrouillages intempestifs lors des lectures ou au contraire t'assurer de la bonne cohérence des données.
Et pour tenter de répondre à ta question principale qui est :
(03-01-2013, 12:36 AM)php_addict a écrit : j'ai en principe des rollback partout, donc ce n'est pas grave finalement ce deadlock, non? si? j'sais plus du tout, help! au secours! :cogne: faut pas se louper sur les rollback c'est tout non?Je dirais que ça dépend.
Ça dépend de la manière dont tes transactions sont imbriquées, à quel niveau de profondeur se situe le deadlock la manière dont l'erreur est gérée, etc.
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC