[...tutto il discorso sugli invest...]
Allora scusa, la butto li.. ma finchè lo cambi, perchè non lo cambiamo del tutto?
Ti butto li un idea...
Viene più semplice a te calcolarlo e risolvi pure in parte il problema del bankroll che viene continuamente tolto o aggiunto.
Potresti fare un sistema che tu dai solo ordine di ingresso e uscita dal bankroll.. ma questo avviene (insieme al ricalcolo) ad orari prestabiliti (esempio ogni 6 ore).
Quindi, per far anche qui un esempio.. io deposito 10BTC sul mio conto, sono le 10 del mattino.
A questo punto clicco su "investi in bankroll" e mi viene un avviso con scritto "Il tuo investimento sarà operativo dalle ore 12" (prossima finestra delle 6 ore disponibile). Fino a quell'ora posso decidere se togliere, cambiare... fare tutto (e ti salvi le cose in una tabella di appoggio a livello di DB).
A questo punto alle 12 (cosi come alle 00, alle 06 e alle 18) gira lo script che investe tutti quelli in coda, ricalcola tutti quelli già dentro e toglie quelli che vogliono uscire.
Da quel momento, per 6 ore, il bankroll è fisso. Non ci saranno nuovi ingressi ne uscite e tutti prenderanno (o perderanno) i guadagni delle prossime 6 ore.
Non ci sarà gente che scappa appena va in negativo un attimo o altro... ma tutti sulla stessa barca.
Lo stesso discorso si applica in uscita. In qualsiasi momento io posso decidere di togliere una somma dal bankroll ma comparirà comunque l'avviso con "La tua somma sarà disponibile nel bilancio nella prima finestra utile, tra X ore (tipo son le 16, sarà disponibile dalle 18)".
In questo modo avrà da gestire solo 6 ore di storico (pochissimo) e non si potrà fare ritira e rimetti... ma ci sarà anche il blocco dell'investimento per un periodo minimo di 6 ore, con anche più stabilità del bankroll stesso.
Non può esser lento un DB con qualche milione di righe... Sono pochissime!
Prevenire è meglio che curare, ora sono poche milioni. Ma se continuiamo così...
Se continui a crescere devi cambiare drasticamente modo di affrontare l'infrastruttura che hai, e ti ho già spiegato come in privato. Un infrastruttura cosi non può comunque gestire milioni di giocate al giorno... per cui se ora con poche milioni di rige già rallenta, hai il database non impostato correttamente.