![Page 1: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/1.jpg)
Performance en Performance en aplicaciones GeneXus. aplicaciones GeneXus. ¿Qué hacer cuando hay ¿Qué hacer cuando hay
problemas?problemas?Alexander Wolff ([email protected])
Marcos Crispino ([email protected])Concepto
![Page 2: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/2.jpg)
¿Quiénes somos?¿Quiénes somos?• Consultoría y desarrollo de software• 10 años de experiencia con GeneXus• Certificación ISO 9000• Reconocimientos
– “Early Adopter of New Technology” (2001)– “Mejor Betatester GeneXus” (2000 y 2001)
• Bases de conocimiento de más de 6000 objetos y 700 tablas
![Page 3: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/3.jpg)
ObjetivosObjetivos• Presentar opciones para analizar y
mejorar la performance en aplicaciones GeneXus.
• Comentar la metodología utilizada en algunos casos.
![Page 4: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/4.jpg)
AgendaAgenda• Optimizaciones en
– GeneXus– Lenguaje de programación– Manejador de base de datos
• Metodología– Generalidades– Web panels– Procesos batch
![Page 5: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/5.jpg)
GeneXus – Buenas GeneXus – Buenas Prácticas (1)Prácticas (1)
• Modelo de datos– Uso de Subtipos– Índices
• For each con filtros– Filtros resueltos en el servidor vs en el
cliente:Servidor&aux = sysdate()For each
where Att = &auxendfor
ClienteFor each
where Att = sysdate()endfor
![Page 6: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/6.jpg)
GeneXus – Buenas GeneXus – Buenas Prácticas (2)Prácticas (2)
• For each que suman o cuentan, utilizar optimizaciones de GeneXus.
No genera count() Genera count()
![Page 7: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/7.jpg)
GeneXus – Buenas GeneXus – Buenas Prácticas (3)Prácticas (3)
• Programar para que genere joins en el servidor
![Page 8: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/8.jpg)
GeneXus – GeneXus – PreferenciasPreferencias
• Delete groups / Agregate groups• Cache de tablas (GX 8.0)• Connect to server: At application
startup• Copy table groups
![Page 9: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/9.jpg)
GeneXus – GeneXus – OptimizacionesOptimizaciones
• Pasaje de valores por parámetro entre los objetos
• Uso de arrays o SDTs• Uso de tablas temporales para resolver
consultas complejas
![Page 10: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/10.jpg)
Lenguaje de Lenguaje de programaciónprogramación
• Uso de variables globales• Herramientas específicas del lenguaje
– Ejemplo: Coverage logging en Visual Fox Pro– http://www.concepto.com.uy/PetroCSharp/
hwnver03.aspx?1,N,0,0,208
![Page 11: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/11.jpg)
DBMS – Plan de DBMS – Plan de ejecuciónejecución
• Disponible en todos los DMBS• Permite
– detectar “full scans” sobre tablas grandes– determinar índices que usa el DBMS (no
siempre coinciden con los que dice GeneXus)
– detectar estadísticas desactualizadas
![Page 12: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/12.jpg)
Falta de índicesFalta de índices( No existe índice por FacFch )
![Page 13: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/13.jpg)
Creando un índice por Creando un índice por FacFch..FacFch..
![Page 14: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/14.jpg)
Estadísticas del DBMSEstadísticas del DBMS• Optimizador de consultas del DBMS usa
estadísticas almacenadas para crear planes de ejecución de sentencias
• Las estadísticas se deben actualizar periódicamente para asegurar planes de ejecución buenos
• Hay que tener una estrategia de actualización de las estadísticas
![Page 15: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/15.jpg)
Estadísticas Estadísticas desactualizadasdesactualizadas
FacFch Count2004-06-01
600900
2004-06-03
600999
2004-06-05
99
2004-06-07
299
2004-06-08
199700
![Page 16: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/16.jpg)
Después de actualizar Después de actualizar las estadísticas..las estadísticas..
![Page 17: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/17.jpg)
HistogramasHistogramas• Se usan para mantener disponible distribuciones
no uniformes al optimizador de consultas del DBMS
Histograma campo FacPaga
0
200000
400000
600000
800000
1000000
1200000
1400000
1600000
N S
Distribución uniforme campo FacPaga
0100000200000300000400000500000600000700000800000
N S
![Page 18: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/18.jpg)
HistogramasHistogramas• Es necesario el uso de literales en el where
del for each
![Page 19: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/19.jpg)
SQL Server ProfilerSQL Server Profiler• Permite hacer trace de las sesiones• Que sentencias se envían al DBMS• Cuando empieza a ejecutarse una
sentencia, cuando termina• Plan de ejecución de sentencias
![Page 20: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/20.jpg)
Index Tunning WizardIndex Tunning Wizard• Dado un trace generado con Profiler y
una base de datos:– Lista las consultas mas costosas– Lista los índices utilizados por cada consulta– Recomienda un conjunto de índices a crear,
y estima el porcentaje de mejora para cada consulta
– Permite crear el conjunto de índices recomendados
![Page 21: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/21.jpg)
Metodología – Metodología – Generalidades (1)Generalidades (1)
• Revisar las navegaciones– For each varias veces a la misma tabla– For each sin filtros– Navegaciones con tabla extendida
![Page 22: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/22.jpg)
Metodología – Metodología – Generalidades (2)Generalidades (2)
• Ver consultas en la base de datos– Ejecutar sentencia SQL que genera GeneXus– Ver el plan de ejecución– Utilizar el Index Tunning Wizard para
analizar el uso de los índices
![Page 23: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/23.jpg)
Metodología – WebMetodología – Web• Uso de paginado para “minimizar” el
tamaño de los HTML• Ver el uso de tablas HTML• Tamaño de las imágenes• Analizar log del web server
![Page 24: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/24.jpg)
Metodología – Metodología – Procesos batchProcesos batch
• Por lo general intervienen varios procedures
• Optimizar la lectura de datos, pasando valores por parametro y usando arrays
• Uso de cache de tablas• Si es posible, generar con un lenguaje
“más rápido”, por ejemplo C/SQL.
![Page 25: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?](https://reader033.vdocuments.co/reader033/viewer/2022061510/56815e3e550346895dcca9a5/html5/thumbnails/25.jpg)
Performance en Performance en aplicaciones GeneXus. aplicaciones GeneXus. ¿Qué hacer cuando hay ¿Qué hacer cuando hay
problemas?problemas?Alexander Wolff ([email protected])
Marcos Crispino ([email protected])Concepto