Problema: abbiamo un tavolo molto grande e in crescita. La maggior parte delle voci (80% circa) sono dati storici (con il campo "data" passata la data corrente) che vengono interrogati raramente, mentre una piccola parte di esso (diciamo il 20%) sono dati correnti (campo "DATA" dopo la data corrente), la maggior parte delle query cerca queste voci correnti.Quanto deve essere grande la tabella MySQL prima di suddividerla in più tabelle?
considerare due possibili scenari, che si sarebbe meglio (considerando la difficoltà di attuazione e le prestazioni generali, ...)
Rompere il grande tavolo in due tabella: i dati storici e attuali. E su base giornaliera sposto i record con data scaduta dalla tabella corrente alla tabella storica.
Mantenere un record in una tabella (il campo DATI è definito come INDICE).
Lo scenario A indicherebbe più caos nella implementazione e manutenzione, e il sovraccarico su basi quotidiane per data tra le tabelle in movimento, mentre lo scenario B indicherebbe la ricerca di un grande database (anche se indicizzato). Imporre problemi di memoria? Quale scenario è raccomandato? C'è qualche altro consiglio?
Dipende completamente dai dati, dall'hardware e dall'indicizzazione. Le tabelle con partizioni eccessive possono rallentare le prestazioni in determinati scenari (come i file aperti di piccole dimensioni consentiti, il numero limitato di tabelle aperte consentito), invece di aumentare le prestazioni.In generale una tabella ben normalizzata con> 100 GB di dati al suo interno, non dovrebbe essere un problema. –
In base a ciò che è necessario fare con i dati archiviati in seguito, si potrebbe voler esaminare anche il motore di archiviazione ARCHIVE. http://dev.mysql.com/doc/refman/5.6/en/archive-storage-engine.html – CBroe