Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è una strategia migliore per archiviare i dati di registro in un database?

A parità di altre condizioni, le tabelle disgiunte più piccole possono avere un vantaggio in termini di prestazioni, specialmente quando sono pesanti in scrittura (poiché è probabile che lo siano le tabelle relative ai log) -- la maggior parte dei meccanismi DB è ottimizzata per la maggior parte delle letture, raramente scritte tavoli. In termini di scrittura (e aggiornamento di eventuali indici che potresti dover mantenere), le tabelle disgiunte piccole sono una chiara vittoria, specialmente se c'è qualche concorrenza (a seconda del motore che stai usando per le tue tabelle, ovviamente -- questo è un aspetto piuttosto importante considerazione in MySQL!-).

In termini di lettura, tutto dipende dal tuo modello di query:di quali query avrai bisogno e con quale frequenza. In alcuni casi, per un modello di utilizzo come quello da te citato, potrebbe esserci un vantaggio in termini di prestazioni nel duplicare determinate informazioni, ad es. se hai spesso bisogno di un totale aggiornato istantaneo dei crediti o debiti di un utente, nonché registri verificabili dettagliati di come è arrivato il totale parziale, mantenere una tabella (logicamente ridondante) dei totali parziali degli utenti potrebbe essere garantito (così come le "tabelle di registro" ben separate sulle varie fonti di credito e debito).