Re: Inserciones en un fichero grande

2018-09-12 Por tema Juan Carlos Paredes
De entrada, lo primero que se me ocurre es que lee/graba, lee/graba, ... 
es un claro candidato a transformarse en un Insert de SQL. Y un Insert 
no tiene por qué irse ralentizando con el tiempo. Además, le daría un 
repaso al asesor de índices de la base de datos. Es probable que si lo 
revisas te proponga crear índices, bien EVI, bien RADIX que agilicen 
bastante el proceso. Revisa los índices que te propone tanto para el 
fichero de origen como para el de destino.


Saludos.

Juan Carlos.

---
https://paredes.info
juancar...@paredes.info

El 12/09/2018 11:55, Juan Carlos O. escribió:

Buenos días a todos.

Mi problema es el siguiente. Tengo un fichero muy grande. Como todos
os podéis imaginar estamos hablado de varios millones de registros.
Todos los días hay un proceso que incluye entre 20.000 y 50.000
registros en el fichero. Solo se incluyen, no hay ni actualizaciones
no borrados. Resumiendo el proceso diario, lee y graba, lee y graba.
El problema es que el proceso cada vez tarda mas. Lo que empezó
tardando minutos, ahora tarda mas de dos horas.

¿Se os ocurre alguna forma de agilizarlo?

Os doy algún dato mas. El proceso se ejecuta en batch. Por desgracia
el fichero gordo, tiene varios índices, el físico se creó con
clave, aunque mi ultimo intento para agilizarlo ha sido realizar las
inserciones sobre un lógico sin clave no he conseguido nada
destacable.

Muchas gracias por el tiempo que habéis dedicado en leer esta
parrafada.

Saludos

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.


Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.


Re: Inserciones en un fichero grande

2018-09-12 Por tema Alex Martínez
Si lee de una tabla y graba en otra tabla una opción es cambiar con CHGPF y
CHGLF *todos los índices* del archivo a *REBLD o *DLY de la tabla de grabas

Otra opción es utilizar un indices EVI

  CREATE ENCODED VECTOR INDEX Library/EVI_Name ON Library/Table_Name
(Column) WITH n DISTINCT VALUES

El mié., 12 sept. 2018 a las 12:59, Juan Carlos O. ()
escribió:

>  Buenos días a todos.
>
> Mi problema es el siguiente. Tengo un fichero muy grande. Como todos os
> podéis imaginar estamos hablado de varios millones de registros. Todos los
> días hay un proceso que incluye entre 20.000 y 50.000 registros en el
> fichero. Solo se incluyen, no hay ni actualizaciones no borrados.
> Resumiendo el proceso diario, lee y graba, lee y graba. El problema es que
> el proceso cada vez tarda mas. Lo que empezó tardando minutos, ahora tarda
> mas de dos horas.
>
> ¿Se os ocurre alguna forma de agilizarlo?
>
> Os doy algún dato mas. El proceso se ejecuta en batch. Por desgracia el
> fichero gordo, tiene varios índices, el físico se creó con clave, aunque mi
> ultimo intento para agilizarlo ha sido realizar las inserciones sobre un
> lógico sin clave no he conseguido nada destacable.
>
> Muchas gracias por el tiempo que habéis dedicado en leer esta parrafada.
>
> Saludos
>
>
> 
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

RE: Inserciones en un fichero grande

2018-09-12 Por tema Javier Mora
¿Piensas que el problema puede estar en operación de inserción? ¿Qué utilizas, 
RPG o SQL? ¿Se tienen que filtrar los registros entrantes? ¿Versión de S.O. y 
nivel de PTF?

Nosotros hacemos algo muy parecido con uno de los ficheros de estadísticas (180 
millones aprox), además con cálculos numéricos antes de la inserción. Se 
ejecuta en un proceso nocturno y en batch. Nosotros no apreciamos retardos, 
porque si los hubiera no tendríamos tiempo para cargar en Qlikview el fichero 
entero antes de las 9.

Nosotros utilizamos un Power8, 7.2 TR8

Se me ocurren algunas ideas:


-  Hacer un test con fichero vacío y medir tiempos (diferencia tiempo 
de lectura de datos y grabación). Hacer la misma prueba con fichero lleno.

-  Si estás utilizando SQL para seleccionar los datos, comprueba si hay 
índices recomendados.

-  Crearía un pool de memoria específico para este trabajo e iría 
probando con diferentes tamaños de memoria.

-  ¿Descartas que no haya una sobrecarga en el sistema en la franja de 
ejecución del proceso?

Esta última ocurrencia me surge porque nosotros hemos apreciado mejoras en el 
rendimiento cuando se reserva (o se asegura) al trabajo un determinado tamaño 
de memoria (sobre todo en procesos nocturnos). Si tienes suficiente memoria 
puedes probar.

Mi opinión es que el proceso no debería relentizarse con el tiempo si el número 
de registros entrante siempre es estable.

Lo cierto es que yo no sabría hacer mucho más (de momento).

Javier Mora

De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Juan Carlos O.
Enviado el: miércoles, 12 de septiembre de 2018 11:56
Para: forum.help400
Asunto: Inserciones en un fichero grande

 Buenos días a todos.
Mi problema es el siguiente. Tengo un fichero muy grande. Como todos os podéis 
imaginar estamos hablado de varios millones de registros. Todos los días hay un 
proceso que incluye entre 20.000 y 50.000 registros en el fichero. Solo se 
incluyen, no hay ni actualizaciones no borrados. Resumiendo el proceso diario, 
lee y graba, lee y graba. El problema es que el proceso cada vez tarda mas. Lo 
que empezó tardando minutos, ahora tarda mas de dos horas.
¿Se os ocurre alguna forma de agilizarlo?
Os doy algún dato mas. El proceso se ejecuta en batch. Por desgracia el fichero 
gordo, tiene varios índices, el físico se creó con clave, aunque mi ultimo 
intento para agilizarlo ha sido realizar las inserciones sobre un lógico sin 
clave no he conseguido nada destacable.
Muchas gracias por el tiempo que habéis dedicado en leer esta parrafada.
Saludos


Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.