Блокировка таблицы в тот момент, когда возможно другое соединение, возможно, прочитало ее PHP/MYSQL
Проблема, с которой я столкнулся, заключается в том, что я не хочу блокировать таблицу mysql в начале моего PHP-скрипта для очевидного увеличения производительности. Я хочу реализовать блокировку только в тот момент, когда я уверен, что мне может понадобиться запись в таблицу. Пример, может быть, мне нужно обновить баланс аккаунта.
Но проблема в том, что если я заблокирую в тот момент, когда мне понадобится ввести некоторые цифры в поле баланса счета, и есть еще одно соединение, которое уже прочитало эту строку из этой таблицы до того, как была произведена блокировка и обновление. Да, это другое соединение должно подождать, пока я не установлю, прежде чем оно сможет сделать что-либо еще в таблице. Но у этого другого соединения уже есть старые данные (что может быть неправильным балансом счета), и любая запись, которую он делает, означает, что он работает с неправильным старым балансом. Давайте предположим, что он хочет добавить 1 к старому балансу. Предполагается добавить эту 1 в самый последний баланс.
Но первое соединение изменило баланс аккаунта, и это второе соединение будет делать то же самое, что приведет к нежелательным результатам.
Есть ли альтернатива этой блокировке только тогда, когда я уверен, что сделаю запись, или мне нужно полностью реализовать блокировку таблицы в начале скрипта, чтобы избежать этого сценария гонок?