php mysql – выполняет ли mysql автоматическую блокировку строк при обновлении?

Я новичок в разработке php, и я хочу создать веб-приложение php-mysql. В этом приложении у меня есть случай, когда возможно, что в то же время у меня может быть один оператор «UPDATE» и один запрос «SELECT» для той же строки. И вот здесь появляется мой вопрос. Может ли mysql автоматически блокировать строку при обновлении, поэтому запросы на выбор будут ждать?

Если да, будут ли выбранные запросы ждать, пока запрос обновления будет готов (транзакция закончена), а затем выполнена? Или они потерпят неудачу, и мне придётся управлять в приложении, чтобы повторно их выпустить?

Любые предложения о том, как действовать в этом случае?

Solutions Collecting From Web of "php mysql – выполняет ли mysql автоматическую блокировку строк при обновлении?"

Да, строка будет заблокирована до тех пор, пока команда обновления не будет завершена. Выбор будет выполнен только после успешного выполнения команды обновления.

Надеюсь, вы, возможно, слышали об свойствах ACID.
вот они:

валентность
Все изменения в данных выполняются так, как если бы они были одной операцией. То есть все изменения выполняются или ни один из них не выполняется.
Например, в приложении, которое переводит средства из одной учетной записи в другую, свойство атомарности гарантирует, что если дебет будет успешно выполнен с одного счета, соответствующий кредит будет передан другой учетной записи.

консистенция
Данные находятся в согласованном состоянии, когда начинается транзакция и когда она заканчивается. Например, в приложении, которое переводит средства из одной учетной записи в другую, свойство согласованности гарантирует, что общая стоимость средств на обоих счетах одинакова в начале и в конце каждой транзакции.

изоляция
Промежуточное состояние транзакции невидимо для других транзакций. В результате транзакции, которые запускаются параллельно, кажутся сериализованными.
Например, в приложении, которое переводит средства с одной учетной записи на другую, свойство изоляции гарантирует, что другая транзакция увидит переведенные средства на одном счете или другом, но не в том и в другом, ни в другом.

долговечность
После успешного завершения транзакции изменения данных сохраняются и не отменены даже в случае сбоя системы.
Например, в приложении, которое переводит средства из одной учетной записи в другую, свойство долговечности гарантирует, что изменения, внесенные в каждую учетную запись, не будут отменены.

Все эти свойства применяются в случае транзакции sql.