Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/01/2011, 08:46
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Un Store P es más optimo en este caso?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Mas o menos. La idea es leer el XML, crear con él un script con INSERTs masivos, y luego gestionar con otro los UPDATE.
Por INSERT masivo se entiende esto:
Código MySQL:
Ver original
  1. INSERT INTO tabla(campo1, campo2, campo3, ... campoN)
  2. VALUES(valor1, campo2, valor3, ... valorN), (valor1, campo2, valor3, ... valorN), (valor1, campo2, valor3, ... valorN), (valor1, campo2, valor3, ... valorN), (valor1, campo2, valor3, ... valorN), (valor1, campo2, valor3, ... valorN)...
De este modo se crea un INSERT de múltiples registros (yo tengo algunos que meten 1.000 por bloque), que se envían al buffer rápidamente y luego se insertan rápidamente.

El caso de los updates es mas complejo porque cada registro debe ser enviado específicamente si los datos a actualizar son algunos y no todos. En ese caso es mejor crear un SP que se invoque desde la aplicación con la lectura del XML. De ese modo se pueden realizar en el SP todas las comprobaciones necesarias para poner o no el dato en cada campo.

Es una forma de verlo.
Hola gnzsoloyo,

De la forma que dices con el insert masivo, no se usaría el load data? o después de crear ese fichero de inserts masivos después tendría que hacer el

LOAD DATA INFILE 'insertsmasivos.txt' INTO TABLE db2.my_table;

También me llama la curiosidad, lo que comentas que tienes algunos que insertan 1.000 por bloque, te refieres 1.000 registros en el fichero? es perjudicial hacer 100.000 en lugar de 1.000 en 1.000? hay que dividirlos en bloques?

Y cuando dices que es complejo los updates, comentarte que no cambian todos los datos, cada registro conserva sus datos a excepción de dos, que son el "precio" que es lo que puede ir cambiando en cada lectura del XML. Los updates son en campos fijos. En ese caso si que se podría usar el SP de manera sencilla?

Crees posible la utilización de algun tipo de caché? o la caché solo afecta a los selects no a los inserts ni updates, y al estar todo el rato insertando y updatando la tabla la caché no haría nada, correcto?

Muchas gracias de antemano!