viernes, 3 de septiembre de 2010

Tablas Temporales | Mysql Server

Hoy mientras programaba me encontre con la dificultad de que un procedimiento de INSERTS MASIVOS me encontre con la dificultad de que la creación de 180.000/300.000 registros llevaba demasiado tiempo para una PC de escritorio, el cual el usuario no estaría dispuesto a esperar.
El procedimiento algo complejo por la cantidad de tablas que se necesitaban ademas de estar controlados por interación para poder agruparlos de 4 en 4 con varias complicaciones más daban por resultado algo así como 2000 inserts por minuto, mirando un poco los ENGINES que soporta MySql me puse a investigar sobre las tablas MEMORY (anteriormente HEAP) las cuales se almacenan en memoria y se pierden al reiniciar el servidor, como dichos datos eran solo de utilidad para armar un reporte nada se ajustaba más que esto, cabe agregar que las definiciones de las tablas se mantienen por lo que lo unico que se persiste en memoria son solo los datos.
Los resultados la verdad me sorprendieron ya que pasó de 2000 ins/min a 17000 ins/min por lo cual estariamos hablando de 8,5 veces mas rápido.
Para terminar quería comentarles que al trabajar con muchos registros es posible que tengan que modificar el max_heap_table_size porque aparecerá el error "FULL TABLE" (por defecto si no me equivoco bien seteado en 1 Mega).