SlideShare una empresa de Scribd logo
1 de 27
Xavier Espinoza Luna
Julio 2016
Agenda
 Introducción al taller
 Conceptos aplicables
 Herramientas de monitoreo SQL
 Recomendaciones al ejecutar y programar consultas
 Documentación de referencia y enlaces de interés
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.
DB2 para iSeries
 DB2 es la base de datos embebida dentro del iSeries
 Tres 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 iSeries
 Ventajas de la plataforma
 La base de datos parte del sistema operativo
 Autónoma y autoadministrable
 Muchas aplicaciones legada en lenguajes nativos
(COBOL, RPG) contra los mismos datos junto a
aplicaciones modernas (.Net, Java, PHP).
 Trabajo a bajo nivel
 Una 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 consultas
 El “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 consultas
 Classic 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 consultas
 Fases 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 SQL
 Asesor de Índices
 Ante memoria de Planes
SQL
 Instantáneas de ante
memoria de Planes SQL
 Supervisores de eventos de
ante memoria de planes
SQL
 Visual Explain
 Supervisores de
rendimiento
Herramientas de Monitoreo SQL
 Explicación demostrativa
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 Genexus
Por que índice va a realizar
la consulta
Que condición aplica
sobre el índice (WHERE
- CHAIN)
Sobre los datos recuperados
que 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
Java
 En 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,F
or+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és
 Libros 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/rzajqp
df.pdf)
 IBM i Technology Updates
(https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/w
iki/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
Taller básico Herramientas Rendimiento DB2 en iSeries

Más contenido relacionado

La actualidad más candente

Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosAnthony Sotolongo
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinJavier Suárez Ruiz
 
Getting the Most out of EPMA: HFM Managing Metadata with EPMA
Getting the Most out of EPMA: HFM Managing Metadata with EPMAGetting the Most out of EPMA: HFM Managing Metadata with EPMA
Getting the Most out of EPMA: HFM Managing Metadata with EPMAfinitsolutions
 
My Favorite Calc Code
My Favorite Calc CodeMy Favorite Calc Code
My Favorite Calc CodeAlithya
 
Arquitectura en Capas
Arquitectura en CapasArquitectura en Capas
Arquitectura en CapasHelenSaravia
 
Consejos para escribir buenos casos de uso
Consejos para escribir buenos casos de usoConsejos para escribir buenos casos de uso
Consejos para escribir buenos casos de usokaolong
 
Modelamiento del Data Warehouse (caso práctico)
Modelamiento del Data Warehouse (caso práctico)Modelamiento del Data Warehouse (caso práctico)
Modelamiento del Data Warehouse (caso práctico)LPI ONG
 
Ciclo de desarrollo de un sistema informático
Ciclo de  desarrollo de un sistema informáticoCiclo de  desarrollo de un sistema informático
Ciclo de desarrollo de un sistema informáticofulgn
 

La actualidad más candente (10)

Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentos
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones Xamarin
 
Modelo del negocio
Modelo del negocioModelo del negocio
Modelo del negocio
 
Getting the Most out of EPMA: HFM Managing Metadata with EPMA
Getting the Most out of EPMA: HFM Managing Metadata with EPMAGetting the Most out of EPMA: HFM Managing Metadata with EPMA
Getting the Most out of EPMA: HFM Managing Metadata with EPMA
 
My Favorite Calc Code
My Favorite Calc CodeMy Favorite Calc Code
My Favorite Calc Code
 
Arquitectura en Capas
Arquitectura en CapasArquitectura en Capas
Arquitectura en Capas
 
Apache Derby
Apache DerbyApache Derby
Apache Derby
 
Consejos para escribir buenos casos de uso
Consejos para escribir buenos casos de usoConsejos para escribir buenos casos de uso
Consejos para escribir buenos casos de uso
 
Modelamiento del Data Warehouse (caso práctico)
Modelamiento del Data Warehouse (caso práctico)Modelamiento del Data Warehouse (caso práctico)
Modelamiento del Data Warehouse (caso práctico)
 
Ciclo de desarrollo de un sistema informático
Ciclo de  desarrollo de un sistema informáticoCiclo de  desarrollo de un sistema informático
Ciclo de desarrollo de un sistema informático
 

Similar a Taller básico Herramientas Rendimiento DB2 en iSeries

Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusPresentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusXavier Espinoza
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
Analisis Comparativo
Analisis Comparativo Analisis Comparativo
Analisis Comparativo JUAN ENRIQUE
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoDeivinson Tejeda
 
Introducción a la plataforma sql azure
Introducción a la plataforma sql azureIntroducción a la plataforma sql azure
Introducción a la plataforma sql azureJoseph Lopez
 
mini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLmini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLCarlos Gustavo Ruiz
 
TechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team SystemsTechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team Systemsfmmeson
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql serverIsabel_Samir
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datosana rosa ruiz
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...Franklin Parrales Bravo
 
Adf. El Framework De Desarrollo De Fusion V7.0
Adf. El Framework De Desarrollo De Fusion V7.0Adf. El Framework De Desarrollo De Fusion V7.0
Adf. El Framework De Desarrollo De Fusion V7.0Pedro Gallardo
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 

Similar a Taller básico Herramientas Rendimiento DB2 en iSeries (20)

Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusPresentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
 
Taller 2
Taller 2Taller 2
Taller 2
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
Couch db
Couch dbCouch db
Couch db
 
Big Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data LakeBig Data en Azure: Azure Data Lake
Big Data en Azure: Azure Data Lake
 
Analisis Comparativo
Analisis Comparativo Analisis Comparativo
Analisis Comparativo
 
Bases de datos
Bases de datos Bases de datos
Bases de datos
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
 
Introducción a la plataforma sql azure
Introducción a la plataforma sql azureIntroducción a la plataforma sql azure
Introducción a la plataforma sql azure
 
mini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQLmini-taller de Base de Datos y PostgreSQL
mini-taller de Base de Datos y PostgreSQL
 
TechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team SystemsTechNoa 2007 - Visual Studio Team Systems
TechNoa 2007 - Visual Studio Team Systems
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datos
 
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
POE Unidad 3: Aplicaciones visuales orientadas a eventos con acceso a base de...
 
Enterprise DB por Eptisa TI
Enterprise DB por Eptisa TI Enterprise DB por Eptisa TI
Enterprise DB por Eptisa TI
 
Adf. El Framework De Desarrollo De Fusion V7.0
Adf. El Framework De Desarrollo De Fusion V7.0Adf. El Framework De Desarrollo De Fusion V7.0
Adf. El Framework De Desarrollo De Fusion V7.0
 
JDBC
JDBCJDBC
JDBC
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 

Taller básico Herramientas Rendimiento DB2 en iSeries

  • 2. Agenda  Introducción al taller  Conceptos aplicables  Herramientas de monitoreo SQL  Recomendaciones al ejecutar y programar consultas  Documentación de referencia y enlaces de interés
  • 3.
  • 5. ¿ 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.
  • 6. ¿ 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.
  • 7.
  • 8. DB2 para iSeries  DB2 es la base de datos embebida dentro del iSeries  Tres 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)
  • 10. DB2 para iSeries  Ventajas de la plataforma  La base de datos parte del sistema operativo  Autónoma y autoadministrable  Muchas aplicaciones legada en lenguajes nativos (COBOL, RPG) contra los mismos datos junto a aplicaciones modernas (.Net, Java, PHP).  Trabajo a bajo nivel  Una sola base de datos con múltiples interfaces de acceso  CL Nativo (CRTPF, CLRPF, DDS)  SQL (Embebido, ODBC, JDBC, CLI)
  • 11. 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.
  • 12. 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).
  • 13. Procesamiento de consultas  El “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.
  • 14. Procesamiento de consultas  Classic 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.
  • 15. Procesamiento de consultas  Fases 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
  • 16.
  • 17. Herramientas de Monitoreo SQL  Asesor de Índices  Ante memoria de Planes SQL  Instantáneas de ante memoria de Planes SQL  Supervisores de eventos de ante memoria de planes SQL  Visual Explain  Supervisores de rendimiento
  • 18. Herramientas de Monitoreo SQL  Explicación demostrativa
  • 19.
  • 20. 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.
  • 21. Recomendaciones Genexus Por que índice va a realizar la consulta Que condición aplica sobre el índice (WHERE - CHAIN) Sobre los datos recuperados que búsqueda realiza Se aplica optimizaciones de ser el caso. No relevante en RPG.
  • 22. 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.
  • 23. 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”
  • 24. Recomendaciones en Genexus C# o Java  En 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,F or+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.
  • 25. Documentación de referencia y enlaces de interés  Libros 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
  • 26. 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/rzajqp df.pdf)  IBM i Technology Updates (https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/w iki/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

Notas del editor

  1. Se presenta la agenda.
  2. En estos días se ha realizado una pequeña evaluación de los problemas existentes con relación a los problemas de rendimiento que tiene la empresa. Se ha realizado un árbol de problemas bajo mi criterio. El problema principal es el deficiente tiempo y no predictibilidad del proceso del sistema actual. Las causas son varias y posiblemente existan muchas mas, pero a partir de este esquema se pretende atacar parcialmente las siguientes : Falta de conocimiento de herramientas y como usarlas Diseño y programación de sistemas sin considerar temas de rendimiento
  3. Por que el AS/400?... Las primeras organizaciones que se iniciaron en el tema informático en la ciudad usaron un sistema 36 provisto por Electrodatos. Los pioneros en la ciudad fueron los Ing. Hernán Vintimilla, quienes ofrecían procesamiento de sistemas como servicio. A principios de los 90 ETAPA decide adquirir su propio equipamiento, siendo el sw el que se ha mantenido y mejorado. Inclusive ahora deben existir aun desarrollos corriendo en el sistema actual. La filosofia es mantener la inversión en lo actuado e ir mejorando conforme exista mejor tecnología. En otros entornos ha existido migraciones en diferentes tecnologías (Foxpro a VB a .Net). Por que i por que es integrado. En otras plataformas se necesitan gurues a nivel de sistema operativo y de base de datos o de servidor de aplicaciones. En i simplemente funciona y punto.
  4. El objetivo del monitoreo del rendimiento de la base de datos es minimizar el tiempo de respuesta de las consultas haciendo el mejor uso posible de los recursos del sistema, minimizando el tráfico de red, lecturas y escrituras de disco y tiempo de CPU. El objetivo se cumple teniendo un conocimiento de la estructura lógica y física de los datos, entendiendo las aplicaciones usadas en el sistema y entendiendo que conflictos de la base de datos alteran su rendimiento. La mejor forma de evitar problemas de rendimiento es hacer que se tome en cuenta dentro de las actividades de desarrollo y diseño de sistemas.
  5. La ventaja del
  6. DB2 es una sola familia, y es una de las bases de datos más utilizadas en el mundo. Se ubica en el puesto numero 6 de popularidad de bases de datos.
  7. Asesor de Índices : que permite en base a las estadísticas (uso, cardinalidad, etc.), sugerir la creación de índices para mejorar las consultas. Antememoria de Planes SQL: que permite el monitoreo de la actividad SQL en el Sistema. Instantáneas de antememoria de Planes SQL : que permite capturar para un análisis posterior la actividad SQL conforme criterios a ser establecidos. Supervisores de eventos de antememoria de planes SQL : que permite capturar información en base a eventos (usuario que ejecuto una consulta) Visual Explain : Detalla de forma gráfica la selección de datos en una consulta Supervisores de rendimiento : captura información de proceso de la base de datos para un análisis posterior Hacer la demostración con el client access.
  8. Asesor de Índices : que permite en base a las estadísticas (uso, cardinalidad, etc.), sugerir la creación de índices para mejorar las consultas. Antememoria de Planes SQL: que permite el monitoreo de la actividad SQL en el Sistema. Instantáneas de antememoria de Planes SQL : que permite capturar para un análisis posterior la actividad SQL conforme criterios a ser establecidos. Supervisores de eventos de antememoria de planes SQL : que permite capturar información en base a eventos (usuario que ejecuto una consulta) Visual Explain : Detalla de forma gráfica la selección de datos en una consulta Supervisores de rendimiento : captura información de proceso de la base de datos para un análisis posterior Para que los Querys aparezcan dnetro del Visual Explain usar: STRQMQRY QMQRY(SIGEDAT/APSISES) OUTPUT(*PRINT) ALWQRYDFN(*YES) Hacer la demostración con el client access.
  9. Probar el STRQMQRY para correr una consulta Query400 dentro del optimizador y visualizarlo en el iSeries Navigator. Radix index: Indice basado en arbol B. EVI Index: Indice basado en vector. Usado para optimizar consultas cuando un campo tiene pocos valores posibles o cardinalidades en comparación a la cantidad de registros. Por ejemplo estados de un registro.
  10. En el caso de optimizaciones no es lo mismo preparar un cursor para recuperar 1 solo dato que varios datos. Internamente el Gestor de la base de datos prepara buffers internos para recibir más información por lo tanto se
  11. Revisar la logica de lectura si aparece el mensaje Navigation filters: Start from: FirstRecord Loop while: NotEndOfTable Join location: Client warning: spc0053: Conditional constraint XXXXX cannot be generated in group starting at line NN. Changed to standard constraint. Tomar como ejemplo los siguientes objetos : Se toma como ejemplo el programa wIn2MBOG que ocupa en algunos casos hasta el 11% del CPU wIn2MBOG Fue reportado por el juan. Analizar lo que se ha encontrado. PObtPermisos que utiliza funciones upper en la busqueda. Demostrar el fuente como se generan busquedas contra toda la base de datos. En el caso del programa, se buscan todos los registros de ISIGA3 y por cada registro busca en SIGAP1 hasta que se cumpla la condición. En el peor de los casos son 90711 registros en la primera tabla y 641 en la segunda tabla. Esto se puede mejorar cambiando la lógica o haciendo que PgmName y UsrName sean mayusculas. pC2CtroMJ Lógica de la linea 44. Mejorar la logica para evitar el join por cliente. No es muy critico pero sirve de ejemplo
  12. Revisar la logica de lectura si aparece el mensaje Navigation filters: Start from: FirstRecord Loop while: NotEndOfTable Join location: Client warning: spc0053: Conditional constraint XXXXX cannot be generated in group starting at line NN. Changed to standard constraint. Tomar como ejemplo los siguientes objetos : Se toma como ejemplo el programa wIn2MBOG que ocupa en algunos casos hasta el 11% del CPU wIn2MBOG Fue reportado por el juan. Analizar lo que se ha encontrado. PObtPermisos que utiliza funciones upper en la búsqueda. Demostrar el fuente como se generan búsquedas contra toda la base de datos. En el caso del programa, se buscan todos los registros de ISIGA3 y por cada registro busca en SIGAP1 hasta que se cumpla la condición. En el peor de los casos son 90711 registros en la primera tabla y 641 en la segunda tabla. Esto se puede mejorar cambiando la lógica o haciendo que PgmName y UsrName sean mayusculas. pC2Prms Revisar la lógica. Al cambiarse al Standard Constraint se hace un recorrido sobre ISIGA3 (90000 registros) condicionados por el IdApp, sobre todos esos datos se aplica la lógica mediante comparaciones de variables. Lo ideal sería que se lea directamente sobre un indice. En conclusión debería verificarse la lógica. pC2CtroMJ Lógica de la línea 44. Mejorar la lógica para evitar el join por cliente. No es muy critico pero sirve de ejemplo