250 likes | 440 Views
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
E N D
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 • 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
Objetivos • Presentar opciones para analizar y mejorar la performance en aplicaciones GeneXus. • Comentar la metodología utilizada en algunos casos.
Agenda • Optimizaciones en • GeneXus • Lenguaje de programación • Manejador de base de datos • Metodología • Generalidades • Web panels • Procesos batch
GeneXus – Buenas 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 = &aux endfor Cliente For each where Att = sysdate() endfor
GeneXus – Buenas Prácticas (2) • For each que suman o cuentan, utilizar optimizaciones de GeneXus. No genera count() Genera count()
GeneXus – Buenas Prácticas (3) • Programar para que genere joins en el servidor
GeneXus – Preferencias • Delete groups / Agregate groups • Cache de tablas (GX 8.0) • Connect to server: At application startup • Copy table groups
GeneXus – Optimizaciones • Pasaje de valores por parámetro entre los objetos • Uso de arrays o SDTs • Uso de tablas temporales para resolver consultas complejas
Lenguaje de programació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 ejecució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 índices ( No existe índice por FacFch )
Estadí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
Histogramas • Se usan para mantener disponible distribuciones no uniformes al optimizador de consultas del DBMS
Histogramas • Es necesario el uso de literales en el where del for each
SQL 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 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 – Generalidades (1) • Revisar las navegaciones • For each varias veces a la misma tabla • For each sin filtros • Navegaciones con tabla extendida
Metodología – 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 – 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 – Procesos 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 aplicaciones GeneXus. ¿Qué hacer cuando hay problemas? Alexander Wolff (awolff@concepto.com.uy) Marcos Crispino (mcrispino@concepto.com.uy) Concepto