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

Post on 13-Feb-2016

89 views 1 download

description

Performance en aplicaciones GeneXus. ¿Qué hacer cuando hay problemas?. Alexander Wolff (awolff@concepto.com.uy) Marcos Crispino (mcrispino@concepto.com.uy) 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?

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

problemas?problemas?Alexander Wolff (awolff@concepto.com.uy)

Marcos Crispino (mcrispino@concepto.com.uy)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 Count2004-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

0100000200000300000400000500000600000700000800000

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 (awolff@concepto.com.uy)

Marcos Crispino (mcrispino@concepto.com.uy)Concepto