Является ли плохой практикой выполнение множества запросов с одной и той же транзакцией в параллельном режиме?

Я выполнял много запросов к базе данных 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