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

Ottimizzazione degli inserti MySQL per gestire un flusso di dati

Se non è necessario che i tuoi dati entrino immediatamente nel database, puoi memorizzare nella cache i tuoi dati di inserimento da qualche parte, quindi emettere un'istruzione di inserimento più grande, ad es.

inserisci in nome_tabella (x, y, z) valori (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) su aggiornamento duplicato ...;

Per essere chiari, manterrei un elenco di inserti in sospeso. In questo caso un elenco di terzine (x,z,y). Quindi, una volta che la tua lista supera una certa soglia (N), generi la dichiarazione di inserimento e la emetti.

Non ho dati temporali precisi per te, ma questo ha aumentato le prestazioni di circa 10 volte rispetto all'inserimento di ogni riga individualmente.

Inoltre non ho giocato con il valore di N, ma ho scoperto che 1000 funziona bene. Mi aspetto che il valore ottimale sia influenzato dalle impostazioni dell'hardware e del database.

Spero che questo aiuti (sto usando anche MyIsam).