Taller básico Herramientas Rendimiento DB2 en iSeries

27
Taller de Herramientas de Monitoreo de Rendimiento DB2 en iSeries Xavier Espinoza Luna Julio 2016

Transcript of Taller básico Herramientas Rendimiento DB2 en iSeries

Taller de Herramientas de Monitoreo de Rendimiento DB2 en iSeries

Xavier Espinoza LunaJulio 2016

AgendaIntroducción al tallerConceptos aplicablesHerramientas de monitoreo SQLRecomendaciones al ejecutar y programar

consultasDocumentación de referencia y enlaces de

interés

Introducción al Taller

Diagrama Causa Efecto

¿ Por qué se planteó el Taller ?El sistema iSeries o AS/400 aloja el

procesamiento de gran parte de los datos empresariales de ETAPA EP desde hace algunas décadas debido a su efectividad, el bajo nivel de administración y la confianza de la plataforma en procesar cargas de trabajo.

A pesar de que la plataforma es autoadministrable, autoajustable, fácil de usar y fácil de mantener, conocer de herramientas de monitoreo y análisis de rendimiento es ventajoso.

¿ Qué pretende el Taller ?La mejora de rendimiento del sistema es un tema

demasiadamente amplio y considera desde el diseño de las aplicaciones hasta un monitoreo constante de la ejecución de las mismas.

Hacer una introducción básica de la arquitectura de la base de datos.

Hacer una introducción de las herramientas y opciones de monitoreo existentes con el fin de propiciar mejoras en las consultas.

Hacer recomendaciones básicas al momento de realizar la codificación tanto de aplicaciones como en consultas.

Conceptos aplicables

DB2 para iSeriesDB2 es la base de datos embebida dentro del

iSeriesTres bases de código de DB2 basado en la

historia de los sistemas, en la arquitectura y en el sistema operativo.DB2 para i (IBM i, System i, iSeries, AS/400)DB2 para z (System z, zSeries, S/390)DB2 para luw (Linux, UNIX, Windows, System

p, System x)

DB2 para iSeries

DB2 para iSeriesVentajas de la plataforma

La base de datos parte del sistema operativoAutónoma y autoadministrableMuchas aplicaciones legada en lenguajes nativos

(COBOL, RPG) contra los mismos datos junto a aplicaciones modernas (.Net, Java, PHP).

Trabajo a bajo nivelUna sola base de datos con múltiples interfaces

de acceso CL Nativo (CRTPF, CLRPF, DDS) SQL (Embebido, ODBC, JDBC, CLI)

Interfaces de acceso

Aplicaciones generadas en RPG utilizan el acceso nativo sobre la base de datos (READE, SETLL, CHAIN). La optimización del rendimiento depende del diseño y la forma de acceder a los datos.

Aplicaciones en .Net o Java utilizan el acceso SQL sobre la base de datos. La optimización del rendimiento depende de como los programas y consultas se ingresan a los datos y de la asistencia de la base de datos.

Consultas Query/400 utilizan el acceso nativo y tienen cierto nivel de optimización dentro del sistema operativo.

Procesamiento de consultas

Aplicaciones generadas en RPG utilizan el acceso nativo sobre la base de datos (READE, SETLL, CHAIN).

Aplicaciones en .Net o Java utilizan el acceso SQL sobre la base de datos.

Consultas Query/400 utilizan el acceso nativo y tienen cierto nivel de optimización dentro del sistema operativo (CQE).

Procesamiento de consultasEl “Optimizador” de consultas en la base de

datos DB2 para iSeries está basado en una optimización basada en costo.

El “costo” es definido como tiempo estimado que toma en ejecutarse una petición

El “costeo” de planes se refiere a la comparación de un grupo de algoritmos y métodos para encontrar el plan más rápido y reducir accesos a disco.

El “Optimizador” tiene la habilidad de reescribir la consulta.

Procesamiento de consultasClassic Query Engine

(CQE): procesa las peticiones provenientes de interfaces no SQL (Query/400, QPNQRYF). Todas las consultas procesadas en el componente clásico.

SQL Query Engine (SQE): procesa las peticiones basadas en SQL.

Procesamiento de consultasFases de ejecución de una consulta :

Validación de la consulta Validación de la petición realizada Validación de planes existentes Creación de estructuras internas de la consulta

Despacho de la consulta Determinar que componente (CQE/SQE) completará el proceso.

Optimización de la consulta Escoger el acceso más eficiente los métodos de proceso. Construir el plan de acceso

Ejecución de la consulta Construir las estructuras que utilizará el cursor Construir estructuras temporales si son necesarias Construir y activar el cursor Generar la información

Herramientas de monitoreo

Herramientas de Monitoreo SQLAsesor de ÍndicesAnte memoria de Planes

SQLInstantáneas de ante

memoria de Planes SQLSupervisores de eventos

de ante memoria de planes SQL

Visual Explain Supervisores de

rendimiento

Herramientas de Monitoreo SQLExplicación demostrativa

Recomendaciones al ejecutar y programar consultas

Recomendaciones para consultas Evitar tomar en el SQL los nombres de índices. El DBMS volverá

a reescribir la consulta. En algunos casos utilizará el módulo CQE para ejecutar la consulta no beneficiándose de las nuevas opciones del SQE.

Evitar usar select *. En primera instancia se selecciona información innecesaria. Al definirse todas las columnas no puede el optimizador encontrar una ruta alterna (p.e Índice) y no podrá ejecutarse más rápidamente la consulta.

Evitar usar funciones o conversiones de datos. Una comparación debe hacerse en base al mismo tipo de dato, misma escala y misma precisión. El optimizador encontrará más fácilmente un índice en vez de recuperar todos los datos.

Evitar usar expresiones numéricas o cálculos dentro del select. El optimizador ejecutará la operación sobre todos los datos sin considerar un posible índice existente.

Recomendaciones GenexusPor que índice va a realizarla consulta

Que condición aplica sobre el índice (WHERE - CHAIN)

Sobre los datos recuperadosque búsqueda realiza

Se aplica optimizaciones de ser el caso. No relevante en RPG.

Recomendaciones en Genexus RPG En lo posible indicar un índice de lectura que sea

relevante para el proceso. Si no se especifica un índice Genexus tomará por defecto el índice principal de la tabla base y sobre todos los datos ejecutará las búsquedas.

Evitar usar funciones o conversiones de datos dentro de los argumentos de un for each. Genexus recuperará los datos del índice o tabla base y sobre aquellos ejecutará las condiciones.

Debe validarse según la necesidad el utilizar opciones dentro del DB2 como por ejemplo JOINS a nivel de RPG, vistas materializadas y particionamiento.

Recomendaciones en Genexus RPG Estar atento a los mensajes de especificación

Cuando se hace una navegación completa de una tabla para recuperar un solo dato o un grupo de datos (Navigation filters: Start from: FirstRecord Loop while: NotEndOfTable)

Cuando se hace un join a nivel cliente (Join location: Client).

Cuando una condición dentro de un for each pasa de “Conditional constraint” a “standard constraint”

Considerar que elementos van en “Constraint” que implican que se leyó por algún índice y luego de ese grupo de datos se aplican los “Constraint”

Recomendaciones en Genexus C# o JavaEn lo posible hacer la que base de datos responda

a las peticiones de sumatorias, conteos, etc.. Para ello debe usarse las optimizaciones creadas dentro de la herramienta (http://wiki.genexus.com/commwiki/servlet/wiki?26286,For+Each+Optimizations,). Las optimizaciones disparan el SQL correspondiente en la base de datos que es mucho mejor que si se desarrolla en el lenguaje destino.

Considerar que el hacer referencia de atributos relacionados entre distintos datastores hará que los joins se hagan a nivel de cliente.

Documentación de referencia y enlaces de interésLibros Rojos de IBM (

http://www.ibm.com/redbooks)Advanced Functions and Administration on DB2

Universal Database for iSeries (SG24-4249-03)DB2 Universal Database for iSeries Administration

The Graphical Way on V5R3 (SG24-6092-00)Preparing for and Tuning the SQL Query Engine

on DB2 for i5/OS (SG24-6598-01)SQL Performance Diagnosis on IBM DB2 Universal

Database for iSeries (SG24-6654-00)DB2 UDB for AS/400 Visual Explain

Documentación de referencia y enlaces de interés IBM DB2 for i indexing methods and strategies (

https://www.ibm.com/partnerworld/wps/servlet/RedirectServlet?cmsId=stg_ast_sys_wp_db2_i_indexing_methods_strategies&attachmentName=ibm_db2_for_i_indexing_methods_and_strategies.pdf)

System i Database Performance and Query Optimization Version 6 Release 1 (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzajq/rzajqpdf.pdf)

IBM i Technology Updates (https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM+i+Technology+Updates/page/DB2+for+i+-+Technology+Updates)

Blog de DB2 en i (http://db2fori.blogspot.com/) DB2 Performance https://www.youtube.com/watch?v=sW1iN3Yd6wk DB2 for i SQL

http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_61/db2/rbafzintro.htm

http://www.lab400.com/Faster-Better-Queries.asp

Gracias!!