Малко за безизходица - софтуер
Това е кратък пост за причините за застоя
На по-малко натоварени проекти, които използват InnoDB сделка по всяко време може да бъде вид грешка
"Мъртва хватка намери, когато се опитвате да получите заключване; опитайте да рестартирате сделка"
Основното нещо е да не изпадате в паника при вида на тези ужасни думи, ние сега разгледаме защо това се случва.
Малко за видовете ключалки
Официалната документация за видовете ключалки Mysql написана доста, а именно:
Той също така се казва, че ако Tranzaktsiya№1 притежава тип заключване S R на линия, от друга Tranzaktsiya№2 да заснемете ключалката. За да се получи тип заключване X по тази линия, втората сделка ще трябва да изчакаме спокойно в кулоарите.
Ако Tranzaktsiya№1 притежава ключалки тип X в ред R, тогава Tranzaktsiya№2 не може да вземете една и съща ключалката, или да получите едно ново ниво на S. Той е спокоен отново и чака, докато е необходимо линия освобождаване Tranzaktsiya№1.
Има един важен момент, за да се научи: Lock S и X - е на 2 заключване. Това не означава, че ключалката S, е подмножество на блок X. за това са две различни лица.
Да се върнем към задънена улица. На някои форуми съм виждал на въпроси като "Как да стигнем до задънена улица Mysql". Всъщност, това е много проста.
Всички необходими съставки, с които разполагаме: две сделки, тип заключване S и X и линията, на която се получава за заключване.
Кратка рецепта за застой на един ред
1) придобива ключалката Tranzaktsiya№1 S и продължава да работи
2) Tranzaktsiya№2 опитва да получи кичур от тип X и ... започва да се изчака, когато ключалката освободи Tranzaktsiya№1 S
3) Tranzaktsiya№1 опитва да получи кичур от тип X и ... започва да се изчака, когато Tranzaktsiya№2 получите кичур от тип X и го пуснете
Има един хлъзгав момент. Изглежда, че пречи Tranzaktsii№1 получи заключване X, ако тя вече има S заключване на една и съща линия. И това пречи на това, което ние говорихме за
1) Първо X е S и две различни заключване
2) На второ място тип заключване S няма право да получава ключалки тип X. Все още няма привилегии - на мястото!
Кодът за по-горе ситуация,
Как да се справят с него? Изключено. Mysql уебсайт съветва Komichi по-често, а също така проверете кода за грешка и ReWire се връщам на сделката. Мисля, че има по-добър вариант - само за да получите тип заключване X. а тогава на третия етап на нашата рецепта Tranzaktsiya№1 може да получи законното си и спокойно заключване край
И накрая ще кажа, че причината за безизходица ще заповядам SHOW ДВИГАТЕЛ InnoDB СТАТУТ. който показва, което се блокира, които пазят и какво очаква