Egy kicsit a holtpont - szoftverek

Ez egy rövid bejegyzést okait Holtpont

A kevésbé terhelt projektek InnoDB tranzakciós bármikor lehet ilyen hiba

„Holtpont talált, amikor megpróbál zár; próbálja újraindítani ügylet”

A lényeg az, hogy ne essen pánikba, amikor meglátta ezeket a szörnyű szavakat, most nézd meg, hogy ez miért történik.

Egy kicsit a fajta zár

A hivatalos dokumentáció a típusú zárak Mysql írt egy kicsit, nevezetesen:

Azt is mondta, hogy ha Tranzaktsiya№1 birtokolja a zárolási típus S r on-line, a másik Tranzaktsiya№2 képes rögzíteni a zárat. Ahhoz, hogy a zár X típusú ezen a vonalon, a második tranzakció meg kell várni, csendben a pálya szélén.

Ha Tranzaktsiya№1 birtokolja a zárat az X típusú sorában r, akkor Tranzaktsiya№2 nem megragad ugyanazt a zárat, vagy kap egy új szintjét S. Ez a csendes, újra és megvárja, amíg Tranzaktsiya№1 kiadása szükséges vonalat.

Van egy fontos pont, hogy lehet tanulni: Lock S és X - egy 2 zár. Ez nem azt jelenti, hogy a zár S részhalmaza a blokk X. Ez két különböző szervezetek.

Térjünk vissza a patthelyzet. Egyes fórumokon láttam kérdésekre, mint „Hogyan lehet egy holtpont Mysql”. Ez valójában nagyon egyszerű.

Minden szükséges összetevők már elérhető: két ügylet, a zár S típusú és X, és a vonal, amelyen a zárat kapunk.

Rövid recept holtpont egyetlen vonalon
1) megszerezzük a zárolást Tranzaktsiya№1 S és tovább dolgozik
2) Tranzaktsiya№2 próbálják befogni az X típusú és ... kezd várni, amikor a kioldó Tranzaktsiya№1 S
3) Tranzaktsiya№1 próbálják befogni az X típusú és ... kezd várni, amikor Tranzaktsiya№2 befogni az X típusú, és engedje el

Van egy csúszós pillanatban. Úgy tűnik, hogy hátráltatja Tranzaktsii№1 befogni X, ha már van egy S zárat ugyanazon a vonalon. És megakadályozza, hogy miről beszéltünk
1) Először X jelentése S és két különböző zár
2) Második lock típusú S nem jogosult a zár típusú X. nincsenek kiváltságok - azon a helyen!

A kód a fenti helyzet,

Hogyan foglalkozni vele? Off. Mysql honlapján tanácsolja Komichi gyakrabban, valamint ellenőrizze a hibakódot és ReWire visszaállíthatja az ügyletet. Azt hiszem, van egy jobb lehetőség - csak azért, hogy a lock típusú X. Aztán a harmadik lépésben a vényköteles Tranzaktsiya№1 kaphat jogos és békés végén zár

Végül azt mondom, hogy az oka a patthelyzet parancsolok SHOW MOTOR InnoDB ÁLLAPOT. amely megmutatja, mely zárak, akik folyamatosan és mi vár