Какую можно улучшить структуру таблицы для хранения баланса клиента?
======================================================================

 В какой-то конкретный момент, таблица клиентов разрослась. Эта таблица используется в большом количестве разных процессов, для построения отчетов и в ней происходят постоянные изменения. Один из важных элементов -- это данные об актуальном балансе средств клиента, которые хранятся в поле balance в таблице clients. По данному полю происходит постоянная нагрузка параллельными запросов на получение и изменение его текущего значения. В таких ситуациях есть риск одновременного списания с одного и того же баланса без учета его параллельного изменения от других процессов.  

Какую можно улучшить структуру таблицы clients ? 

> таблица клиентов разрослась

  

это же прекрасно  

> В таких ситуациях есть риск одновременного списания с одного и того же баланса без учета его параллельного изменения от других процессов.

  

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

  

да и сама вероятность коллизии по балансу счета мизерна. физическое действие запроса баланса по счету или проведения трансакции по нему требует времени. 

> Один из важных элементов -- это данные об актуальном балансе средств клиента, которые хранятся в поле balance в таблице clients. По данному полю происходит постоянная нагрузка параллельными запросов на получение и изменение его текущего значения.

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