Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

25
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

description

Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?. Alexander Wolff ([email protected]) Marcos Crispino ([email protected]) Concepto. ¿Quiénes somos?. Consultoría y desarrollo de software 10 años de experiencia con GeneXus Certificaci ón ISO 9000 - PowerPoint PPT Presentation

Transcript of Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

Page 1: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

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?

¿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?

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?

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?

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?

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?

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?

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?

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?

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?

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?

Falta de índicesFalta de índices( No existe índice por FacFch )

Page 13: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

Creando un índice por Creando un índice por FacFch..FacFch..

Page 14: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

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?

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?

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?

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?

HistogramasHistogramas• Es necesario el uso de literales en el where

del for each

Page 19: Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?

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?

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?

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?

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?

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?

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?

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