Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/11/2013, 10:56
blanxiii
(Desactivado)
 
Fecha de Ingreso: noviembre-2013
Mensajes: 18
Antigüedad: 10 años, 5 meses
Puntos: 4
Respuesta: Mejorar rendimiento MySQL

primero, entiendo que haces insert uno a uno porque no intentas hacer un insert masivo? cada 50k no.. pero puedes hacer cada 1k insertar así solo se lanzan 50k por ejemplo.


Eje:

INSERT INTO table (campo1, campo2, campo3) VALUES (1,2,3),(4,5,6)

es decir acumular 1000 de (1,2,3),(4,5,6) me explico?

Si haces selects a la vez que insertas eso relantiza ya que un insert bloquea la tabla.

En cuanto a optimización un MySQL Server se caracteriza por tener RAM y HD solido

tienes el my.cnf original con los mismos valores? Si me dices tu servidor y que tablas usas InnoDB o MyIsam puedo mirar de hacerte una configuración.


Yo creo que con esas dos cosas notarías montón la performance.

También depende de lo que estas insertando, podrías poner el schema de tu base de datos y un valor para que me haga una idea?

Que cargas en un array del csv 50k?


Yo haría leo del archivo mientras mi array sea inferior a 1000 cuando es 1.000 inserto en base de datos, elimino esas 1000 del array y sigo leyendo 1.000 más.

si comentas el insert cuanto te tarda en leer el csv? Es para descartar ya que creo que en leer un csv de esas cantidades ya tardará lo suyo.

Añado:

Trabajando con una base de datos de 136GB usamos 24GB de RAM y dos HD sólidos y la performence se nota un monton, eso si tienes que saber tocar tu my.cnf pasame especificaciones de la maquina en privado y te lo miro. Importante saber el % de InnoDB y MyISAM que tienes saca un excel y analiza las grandes...

SELECT table_schema, table_name, engine FROM INFORMATION_SCHEMA.TABLES;