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

Le prestazioni di MySQL Insert peggiorano su un tavolo di grandi dimensioni

Non hai detto se si trattava di un sistema di test o di produzione; Presumo che sia di produzione.

È probabile che tu abbia la tabella a una dimensione in cui i suoi indici (o l'intero lotto) non si adattano più alla memoria.

Ciò significa che InnoDB deve leggere le pagine durante gli inserimenti (a seconda della distribuzione dei valori di indice delle nuove righe). La lettura delle pagine (letture casuali) è molto lenta e deve essere evitata se possibile.

Il partizionamento sembra la soluzione più ovvia, ma il partizionamento di MySQL potrebbe non adattarsi al tuo caso d'uso.

Dovresti sicuramente considerare tutte le opzioni possibili:porta la tabella su un server di prova nel tuo laboratorio per vedere come si comporta.

La tua chiave primaria mi sembra come se non fosse richiesta (hai un altro indice univoco), quindi eliminarla è un'opzione.

Considera anche il plugin innodb e la compressione, questo farà andare oltre il tuo innodb_buffer_pool.

Hai davvero bisogno di analizzare i tuoi casi d'uso per decidere se hai effettivamente bisogno di conservare tutti questi dati e se il partizionamento è una soluzione sensata.

È probabile che apportare modifiche a questa applicazione introduca nuovi problemi di prestazioni per i tuoi utenti, quindi devi stare molto attento qui. Se trovi un modo per migliorare le prestazioni di inserimento, è possibile che riduca le prestazioni di ricerca o le prestazioni di altre operazioni. Prima di rilasciare una tale modifica, dovrai eseguire un test approfondito delle prestazioni sull'hardware di livello produttivo.