там же своя какая-то целая наука с кучей локов. Узкая область знаний о том как это всё делать правильно. Я от неё далёк.
ну вот либо ты делаешь глобальный лок, и все жутко тормозит, либо делаешь глобальную append-only очередь из операций, которые сделаны на основе best effort (некоторые могут конфликтовать). И затем ты можешь реплицировать этот лог на независимые N машин, которые могут отставать с разным лагом от Истины, заключенной в процессинге всей очереди.
Когда ты делаешь платеж через одну из машин, она делает быструю локальную проверку, есть ли деньги (чтоб не писать в очередь почем зря), и если ей кажется что есть, засылает транзакцию в очередь. А вот отвечает она тебе, что все ок - после того как подсосала всю очередь до того места, где твоя транзакция. И, естественно, она выкидывает конфликтующие транзакции детерминированным образом. Если дошла до твоей и она не конфликтует - значит, конфёрмд. А если нет - то отлуп.
Так ты можешь отреплицировать свою БД на чтение и записью не тормозить все реплики.