performance en aplicaciones genexus. ¿qué hacer cuando hay problemas? alexander wolff...
TRANSCRIPT
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
¿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
ObjetivosObjetivos
• Presentar opciones para analizar y mejorar la performance en aplicaciones GeneXus.
• Comentar la metodología utilizada en algunos casos.
AgendaAgenda
• Optimizaciones en– GeneXus– Lenguaje de programación– Manejador de base de datos
• Metodología– Generalidades– Web panels– Procesos batch
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
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()
GeneXus – Buenas GeneXus – Buenas Prácticas (3)Prácticas (3)
• Programar para que genere joins en el servidor
GeneXus – GeneXus – PreferenciasPreferencias
• Delete groups / Agregate groups• Cache de tablas (GX 8.0)• Connect to server: At application
startup• Copy table groups
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
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
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
Falta de índicesFalta de índices( No existe índice por FacFch )
Creando un índice por Creando un índice por FacFch..FacFch..
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
Estadísticas Estadísticas desactualizadasdesactualizadas
FacFch Count
2004-06-01
600900
2004-06-03
600999
2004-06-05
99
2004-06-07
299
2004-06-08
199700
Después de actualizar Después de actualizar las estadísticas..las estadísticas..
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
0
100000
200000
300000
400000
500000
600000
700000
800000
N S
HistogramasHistogramas
• Es necesario el uso de literales en el where del for each
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
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
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
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
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
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.
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