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

Quanto è grande troppo per una tabella MySQL?

Non esiste un'ottima soluzione generale alla domanda "Quanto è grande è troppo grande":tali preoccupazioni dipendono spesso da ciò che stai facendo con i tuoi dati e da quali sono le considerazioni sulle prestazioni.

Ci sono alcuni limiti fondamentali sulle dimensioni dei tavoli. Non puoi avere più di 1000 colonne. I tuoi record non possono essere più grandi di 8k ciascuno. Questi limiti cambiano a seconda del motore di database. (Quelli qui sono per InnoDB.)

Sembra che tu abbia unito diversi set di dati in un'unica tabella. Probabilmente hai alcuni campi che ti dicono a quale set di dati appartiene questo record, insieme ad alcuni campi di dati e alcune informazioni sul timestamp. Non è un record molto ampio (a meno che tu non stia registrando, diciamo, tutti i parametri di input di ogni richiesta). Il tuo problema principale sarà con la selettività . Indicizzare questa tabella in modo significativo sarà una sfida. Se i tuoi campi comuni possono essere abbastanza selettivi da poterli utilizzare per ottenere i record desiderati senza consultare la tabella, questo sarà un enorme vantaggio. (Cfr. scansione tabella)

Per così tanti record al giorno (fondamentalmente, due al secondo per tutto il giorno, e presumo che tu abbia un periodo di picco di carico in cui è molto più alto), ti consigliamo anche di esaminare specificamente le ottimizzazioni su migliorare la velocità di inserimento . Come regola generale, più indici =inserimenti più lenti. Se puoi, considera l'archiviazione dei record obsoleti in un'altra tabella completamente. Nei luoghi di lavoro precedenti, abbiamo utilizzato una strategia di archiviazione del mese scorso, dei tre mesi precedenti, dei sei mesi precedenti, ciascuno in tabelle separate. Un'altra idea è eliminare i record più vecchi. Molti ambienti semplicemente non necessitano di informazioni oltre una certa data. Sostenere la registrazione dei record di tre mesi fa è spesso eccessivamente costoso.

Infine, non trascurare la archiviazione fisica della tua tavola Più sottili sono i tuoi record, meno IO fisico è necessario per leggere (o per inserire) un record. Puoi archiviare i tuoi indici su un disco rigido fisico separato. Se ci sono molti dati ridondanti nei tuoi record, la memorizzazione della tabella compressa potrebbe effettivamente essere un aumento della velocità. Se hai un po' di soldi da bruciare, considera il valore di un buon array RAID per lo striping dei tuoi dati.

Quindi, per rispondere alla tua domanda fondamentale:sono tanti dischi, ma con un occhio attento all'accordatura non sarà un problema.