Fala pessoal! Tudo bem?
Pô, essa ideia de salvar o último saldo em uma coluna é muito boa e diminui bastante o tempo de leitura. Já cogitamos utilizá-la aqui no Pagar.me. Mas, como toda ideia, possui alguns tradeoffs que acabaram fazendo com que não seguíssemos com essa abordagem.
Quando discutimos um pouco mais a fundo esta ideia, percebemos que a vantagem de ter o cálculo de saldo mais rápido nos traria um custo: a escrita neste caso precisa ser serial. Dessa forma você garante a consistência das entradas e saídas. Mas, dependendo do volume de inserções na tabela de saldo, a serialização aumentará o tempo para processar a geração de saldo.
Esta solução é muito viável para os casos onde o volume de dados inseridos não é muito grande. Porém, não se provou muito escalável no nosso caso. Mesmo que utilizássemos critérios mais específicos para lock dos registros (por cliente, por exemplo), alguns casos ainda geravam gargalo.