Performance en aplicaciones Gene Xus Qu hacer cuando

  • Slides: 25
Download presentation
Performance en aplicaciones Gene. Xus. ¿Qué hacer cuando hay problemas? Alexander Wolff (awolff@concepto. com.

Performance en aplicaciones Gene. Xus. ¿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

¿Quiénes somos? • • Consultoría y desarrollo de software 10 años de experiencia con Gene. Xus Certificación ISO 9000 Reconocimientos – “Early Adopter of New Technology” (2001) – “Mejor Betatester Gene. Xus” (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 Gene. Xus.

Objetivos • Presentar opciones para analizar y mejorar la performance en aplicaciones Gene. Xus. • Comentar la metodología utilizada en algunos casos.

Agenda • Optimizaciones en – Gene. Xus – Lenguaje de programación – Manejador de

Agenda • Optimizaciones en – Gene. Xus – Lenguaje de programación – Manejador de base de datos • Metodología – Generalidades – Web panels – Procesos batch

Gene. Xus – Buenas Prácticas (1) • Modelo de datos – Uso de Subtipos

Gene. Xus – 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 Cliente &aux = sysdate() For each where Att = sysdate() where Att = &aux endfor

Gene. Xus – Buenas Prácticas (2) • For each que suman o cuentan, utilizar

Gene. Xus – Buenas Prácticas (2) • For each que suman o cuentan, utilizar optimizaciones de Gene. Xus. No genera count() Genera count()

Gene. Xus – Buenas Prácticas (3) • Programar para que genere joins en el

Gene. Xus – Buenas Prácticas (3) • Programar para que genere joins en el servidor

Gene. Xus – Preferencias • Delete groups / Agregate groups • Cache de tablas

Gene. Xus – Preferencias • Delete groups / Agregate groups • Cache de tablas (GX 8. 0) • Connect to server: At application startup • Copy table groups

Gene. Xus – Optimizaciones • Pasaje de valores por parámetro entre los objetos •

Gene. Xus – 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 –

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/Petro. CSharp/ hwnver 03. aspx? 1, N, 0, 0, 208

DBMS – Plan de ejecución • Disponible en todos los DMBS • Permite –

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 Gene. Xus) – detectar estadísticas desactualizadas

Falta de índices ( No existe índice por Fac. Fch )

Falta de índices ( No existe índice por Fac. Fch )

Creando un índice por Fac. Fch. .

Creando un índice por Fac. Fch. .

Estadísticas del DBMS • Optimizador de consultas del DBMS usa estadísticas almacenadas para crear

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

Estadísticas desactualizadas Fac. Fch Count 2004 -06 -01 600900 2004 -06 -03 600999 2004

Estadísticas desactualizadas Fac. Fch 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 las estadísticas. .

Después de actualizar las estadísticas. .

Histogramas • Se usan para mantener disponible distribuciones no uniformes al optimizador de consultas

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

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

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

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

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

Metodología – Generalidades (2) • Ver consultas en la base de datos – Ejecutar sentencia SQL que genera Gene. Xus – 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

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

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 Gene. Xus. ¿Qué hacer cuando hay problemas? Alexander Wolff (awolff@concepto. com.

Performance en aplicaciones Gene. Xus. ¿Qué hacer cuando hay problemas? Alexander Wolff (awolff@concepto. com. uy) Marcos Crispino (mcrispino@concepto. com. uy) Concepto