Autor Zpráva
kliednos
Profil *
ahoj, ve své php aplikaci často pracuji s transakcemi v mysql. Problém může být to, že ve specifických případech se transakce nemusí povést (nejen v případě deadlocku). V takových případech se musí celá transakce opakovat. Udivuje mě, že o tomto tématu jsem nenašel nikde zmínky a ani žádný framework neobsahuje nic, co by automaticky zopakovalo špatnou transakci. Používám PDO a nebylo by pro mne problém napsat si vlastní třídu, která si bude pamatovat příkazy v transakci a při neúspěchu je zopakuje, ale to se mi nechce, protože mi přijde podezřelý, že to ještě nikde neexistuje. Co je v tom za háček?
php
Profil
K tomu aby došlo k deadlocku je potřeba splnit 4 podmínky zároveň, pravděpodobnost, že se tak stane je dost malá, každopádně, většinou když se nepovede transakce, je něco špatně a opakování na tom zpravidla nic nezmění, nebo jen v opravdu vyjímečných případech se opakováním transakce může provést, pokud se ti teda nepovodení transakce stává dost často, něco je špatně, ať už chyba v programu, která vznikne ve specifických případech, které nejsou ošetřeny, špatná konfigurace nebo třeba nedostačující HW, proto si myslím, že je taková třída naprosto zbytečná. Ale chtělo by to aby sem napsal názor někdo zkušenější.
kliednos
Profil *
Např. když běží několik transakcí zároveň, kde jedna závisí na datech zamčených druhou transakcí apod. se může vyskytnout situace kdy je potřeba transakci zopakovat. Ještě se mi to teda nestalo, ale to je spíš náhoda. Každopádně tohle mysql řeší timeoutem. Pokud ale timeout vyprší nebo transakce nastartují tak, že dojde k deadlocku, tak to mysql odstřelí.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0