sql >> Base de Datos >  >> RDS >> Mysql

Optimización de inserciones de MySQL para manejar un flujo de datos

Si sus datos no necesitan ingresar a la base de datos de inmediato, puede almacenar en caché sus datos de inserción en algún lugar y luego emitir una declaración de inserción más grande, por ejemplo,

insertar en table_name (x, y, z) valores (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) en actualización duplicada ...;

Para ser claros, mantendría una lista de inserciones pendientes. En este caso, una lista de tripletes (x, z, y). Luego, una vez que su lista exceda algún umbral (N), genere la declaración de inserción y la emita.

No tengo cifras de tiempo precisas para usted, pero esto aumentó el rendimiento aproximadamente 10 veces en comparación con la inserción de cada fila individualmente.

Tampoco he jugado con el valor de N, pero encontré que 1000 funciona bien. Espero que el valor óptimo se vea afectado por la configuración del hardware y la base de datos.

Espero que esto ayude (también estoy usando MyIsam).