Лоша практика ли е да изпълнявате много заявки с една и съща транзакция в паралелен режим?

Изпълнявах много заявки към MySQL база данни със същата транзакция, използвайки Promise.all(), така че всички заявки се изпълняват паралелно, ако се случи нещо лошо, връщам транзакцията назад. Но един приятел каза, че изпълнението на заявки паралелно е лоша практика, защото ако заявка е неуспешна и транзакцията е върната назад, ще има други заявки, които все още се изпълняват в MySQL, които използват същата транзакция и ако не намерят транзакцията, ще изведат грешки в самия MySQL.

Той предложи да се изпълняват заявките последователно, така че ако се случи нещо лошо, транзакцията ще се върне назад и следващата заявка няма да се изпълни. Опитах се да намеря някои доказателства за този проблем, но не можах да намеря нито едно или пропуснах някои, ако съществуват.

Надяваме се, че някой може да ми даде ясен отговор или справка и благодаря предварително.


person benbouya    schedule 11.06.2019    source източник


Отговори (1)


Promise.all(), както е описано тук изчаква всички обещания да бъдат разрешени и ако само едно от тях бъде отхвърлено, то също ще отхвърли. Така че проблемите са 1. Всичките ви методи ли се предават на promise.all() връщайки обещание или те използват функции за обратно извикване? 2. Важно ли е кой от тези методи да се стартира първо? защото promise.all() не се интересува в какъв ред разрешават 3. Важно ли е колко метода връщат отказ, защото promise.all() ще отхвърли при първото отхвърляне. Освен това, ако използвате този метод за MySQL и т.н., понякога вашият ORM може да се справи с това по някакъв начин, но отхвърля. Така че аз лично съм съгласен с вашите приятели, тъй като този метод е труден за контролиране, но може би ще намерите приложение за него :)

PS: Надяваме се, че други участници ще ми помогнат с други точки, които съм пропуснал.

person Shaahin Shemshian    schedule 11.06.2019