anonymous Log in
Search
Recents:
v3.0
csharp-l
App .Net con GX16 ADO graba muy lento en iSeries (AS/400)
04/12/19 12:24

craudale

Replies: 7

Saludos
Una App que estaba en ambiente windows la migramos a ambiente web con .Net. Los datos se graban en el iSeries (AS/400) por medio de un DataView.
El problema es que para grabar 6,500 registros se tardaba 3 minutos en ambiente Win y ahora se tarda 41 minutos en ambiente Web.
¿Puede orientarnos sobre lo que puede estar pasando?
Ambiente:
Windows 10 Pro, version 1909
GX16 U6
iSeries (AS/400) con OS 7.2
ADO
Observación. Se han realizado pruebas de grabación en el iSeries con diferentes métodos con resultados de ejecución de 32 segundos, por lo que se descarta problemas en el lado del iSeries.
Gracias
Carlos Raudales | Information Technology
Standard Fruit de Honduras, S.A. | La Ceiba, Atlántida, Honduras
Office: 504.2443.0511 x 2158 | Mobile: 504.9967.2982
Email: Carlos.Raudales@dole.com
Visit us online at Dole.com<http://www.dole.com/> | Facebook<https://www.facebook.com/Dole/> | Twitter<https://twitter.com/DoleTweets> | Pinterest<https://www.pinterest.com/DolePins/> | Instagram<https://www.instagram.com/dolepics/>
Dole is aware that fake email messages can be used in order to trick customers & suppliers making payments to fraudulent bank accounts . Dole will NEVER ask you to change our bank account details by email only. Should you receive an email from Dole advising you of new bank account details please contact your regular contact at Dole by phone to confirm that the request is genuine. Do not use contact details provided in the suspicious email. Please remain vigilant of fraudulent activity. ---- The preceding e-mail message (including any attachments) contains information that may be confidential or may be otherwise intended as non-public information. It is intended to be conveyed only to the designated recipient(s). If you are not an intended recipient of this message, please notify the sender by replying to this message and then delete it from your system. Use, dissemination, distribution, or reproduction of this message by unintended recipients is not authorized and may be unlawful.
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,11
Por consultas owner-csharp-l@gxtech.com.uy
Replies

irwoshua

04/12/19 19:48
Favor dar mas datos, por lo menos el procedimiento de como graba los datos?, estructura de los datos que esta guardando tambien influye la infraestructura del cableado de red. hay que ir quitando dudas de que puede ser: El mié., 4 dic. 2019 a las 13:56, Carlos Raudales ()

cfalchini

04/12/19 23:13
Calos: Fijate si la inserción de estos 6500 lo estas haciendo con BC (Business Component). Si es asi va a ser mucho mas lenta que utilizando un new/endnew. El mié., 4 dic. 2019 a las 16:57, Carlos Raudales ()

craudale

05/12/19 11:27
Muchas gracias por su apoyo. Esta App funciona solo como interface de datos entre sistemas. Es muy pequeña y sencilla; y trabaja con datos "limpios" (ya validados). Utiliza únicamente new/endnew. Adjunto procedimiento completo (es muy simple). New Atributo1 = &variable 1 Atributo2 = &variable 2 ... Atributo25 = &variable 25 EndNew Agraedzco su atención. ________________________________

Luis Pejcovich57091

05/12/19 12:21
Carlos: Los procesos de inserción que usan DataView tienen un “delay” incomodo... Ya sea a bd de as/400 como a Ms-sql Fíjate si es posible cambiar la ejecución a un proceso propio en AS/400. Que tu procedimiento tome como lectura datos del DataView y los inserte en tablas de la DataStore Default Créate una KB al revés, donde ejecutes en RPG (por ejemplo) con tu tabla a donde insertar como “propia” y la de origen de datos (de consulta) la del DataView. Se que suena raro, pero GX gestiona diferente los tiempos de acceso a un tipo de conexión de tablas “externas “ Tal vez encuentras otra alternativa, ojalá, pero para procesos de inserción/modificacion de más de una docena de registros de tablas externas los tiempos se vuelven difíciles de explicar. Atentamente Luis Pejcovich El El jue, 5 de diciembre de 2019 a la(s) 9:01, Carlos Raudales < Carlos.Raudales@dole.com>

guscarr

05/12/19 13:07
Carlos, La causa por la cual puede ser tan lento (en comparación con el mismo proceso en Windows (supongo que VB o VFP) puede venir por cualquier lado: infraestructura (como se mencionaba), configuracion del ADO.NET, etc. Algo que puede ayudar a mejorar la performance es usar blocking: https://wiki.genexus.com/commwiki/servlet/wiki?4538,Blocking%20Clause%20in%20%27New%27%20Command Sino creo que habría que hacer un log del proceso a ver donde están los tiempos. Saludos, Gustavo *

isc.javierjacobo25

05/12/19 15:51
He solucionado ese tipo de detalled insertando con sql directamente, por ejemplo. &Query = "insert into tabla (v1, v2,) values (" +var1+ ",'" +var2 +")" Sql[!&Query!] Aqui inserta 2 campos de texto El mié., 4 de diciembre de 2019 1:56 p. m., Carlos Raudales < Carlos.Raudales@dole.com>

craudale

09/12/19 19:25

Gracias por sus aportes.

Al cambiar de lugar el procedimiento para insertar (lo incluímos el procedimiento general, en lugar de tenerlo separado) mejoró en 4 veces el tiempo de respuesta.

También probamos el blocking. Mejoró en un procedimiento pero no se observa mejoras en otros.

En el caso del comando sql no fue posible utilizarlo ya que ese comando solo puede hacer referencia al DataStore default (que en nuestro caso es SQL Server).

Saludos.



Back to csharp-l