SlideShare una empresa de Scribd logo
1 de 45
Xavier Espinoza Luna
Marzo 2019
Agenda
 Componentes de software
 Generación de programas en Genexus
 Arquitectura del DB2 para IBM i
 Herramientas de monitoreo
 Recomendaciones al ejecutar y programar consultas
 Documentación de referencia y enlaces de interés
¿ Por qué se planteó el Taller ?
 El sistema IBM i 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
aplicaciones nativas y cliente/servidor.
 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 IBM i
 DB2 es la base de datos embebida dentro del IBM i
 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, IBM i, AS/400)
 DB2 para z (System z, zSeries, S/390)
 DB2 para luw (Linux, UNIX, Windows, System p, System
x)
DB2 para IBM i
DB2 para IBM i
 Ventajas de la plataforma
 La “i” proviene de sistema integrado
 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
 Nativo (CRTPF, CLRPF, DDS)
 SQL (Embebido, ODBC, JDBC, CLI)
 Dos tipos de índices (Radix o Arbol Binario/Vector Codificado)
 Tablas particionadas, Consultas Materializadas
 Procesamiento simétrico (DB2 Symmetric Multiprocessing)
Interfaces de acceso
Aplicaciones
generadas en RPG
utilizan el acceso nativo
sobre la base de datos
(READE, SETLL,
CHAIN, OPNQRYF). 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.
Genexus
 Generador de programas a partir de un conjunto común de
fuentes de conocimiento (Knowledge Manager) y lenguaje
neutral.
 En ETAPA EP se generan programas en RPG III, JAVA y C# que
usan la base de Datos DB2 contenida en un servidor IBM i.
 La arquitectura de las aplicaciones generadas son las clientes :
 Entorno WIN : Pantalla Verde en donde la interfaz de usuario,
acceso a datos, lógica y consultas lo resuelve el propio IBM i.
 Entorno WEB : Orientado a Navegador en donde corre la interfaz de
usuario interpretado por el PC (HTML, JS), la lógica y el acceso a
datos y consultas las realiza el Application Server (IIS) y el DB2 es
repositorio de datos o puede ejecutar lógica que esta fuera de lo que
controla el GX (Procedimientos Almacenados, Triggers, etc).
 Existen procesos independientes que corren en Windows (C#) y
dentro del sistema IBM i (Java) para modificar información.
Generación en RPG
 RPG Nativo, usando para la creación de bases de datos
hojas DDS (Data Definition Sheets) en donde se definen
“estructuras de registros” para obtener datos.
 Tanto las tablas base como los índices son definidos
mediante “estructuras de registros” usando DDS. También
las claves primarias.
 Puede usarse SQL dentro de RPG así como la activación de
restricciones (FK PK NULL) pero Genexus no genera a ese
nivel o no aprovecha el generador RPG de dichas
características estándar.
 En la lógica de obtención de datos dentro del programa
RPG generado se utilizan las “estructuras de registro”.
Generación en RPG
 En Genexus se advierte la creación de índices, por cuanto es
más eficiente leer una “estructura de registro” de un índice
construido que formar al vuelo la información.
 Si no existe un índice o este no se ha creado, el
ordenamiento o selección e información se utiliza el
comando OPNQRYF quien genera el “query” o “consulta”.
 Las uniones de tablas o el acceso a las tablas extendidas,
Genexus realiza “manualmente” la unión y no utiliza
OPNQRFY para ello.
 OPNQRFY es un API para creación de consultas de forma
dinámica y similar a lo que realiza SQL. Se ejecuta en el
CQE o Classical Query Engine.
Generación en RPG
 En Genexus RPG el programador utiliza el camino
necesario para acceder a los datos o en su defecto
empleará OPNQRFY.
 La optimización del rendimiento se basa en utilizar las
recomendaciones de escritura del código en Genexus
interpretando el Navigation View y en la destreza del
programador (cuantos accesos hace para obtener la
información, por que medio o índice, etc).
Generación en Java o C#
 Utiliza el estándar SQL para poder manipular los datos.
 La creación de la base de datos se emplea sentencias DDL
de creación (CREATE TABLE, CREATE INDEX).
 En ciertas bases de datos genera secuencias (CREATE
SEQUENCE)
 Para uniones utiliza las sentencias JOIN estándar de SQL.
 Emplea ciertas construcciones de la base de datos (más
optimo) según como se codifique.
 Puede activarse la integridad referencial en toda la base de
datos (FK, PK, Nulos).
Generación en Java o C#
 La optimización de las consultas se basa en la destreza
del programador para obtener la información y en
emplear las herramientas de rendimiento del servidor
IBM i.
 A diferencia de RPG el “Gestor de la Base de Datos” es
quien decide por que camino ir para obtener la
información. Obviamente al “Gestor” hay que indicarle
las opciones y este también decide por donde ir o
sugiere que se debe hacer para la mejora respectiva.
 Se deben emplear las opciones existentes en el servidor
para ajustar las consultas.
Arquitectura de
Procesamiento de
consultas y
aplicaciones
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 -
OPNQRYF utilizan
el acceso nativo y
tienen cierto nivel
de optimización
dentro del sistema
operativo (CQE).
Optimizadores 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.
Esquema de Procesamiento de
consultas
 Fases de ejecución de una consulta (Query/SQL):
 Validación de la consulta
 Validación de la petición realizada
 Validación de planes existentes (Cache de Consultas)
 Creación de estructuras internas de la consulta
 Despacho de la consulta
 Determinar que componente de optimización (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
Características del Optimizador
 El “Optimizador” de consultas en la base de datos DB2
para IBM i 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.
En resumen
 El acceso nativo desde los programas RPG no se beneficia
del optimizador. Depende de como se escribe y se diseña el
programa.
 El optimizador clásico se dispara únicamente en consultas
Query/400 y OPNQRFY.
 El acceso SQL y Query/400 utiliza el componente de
optimización de consultas de la base de datos.
 El optimizador SQL se dispara para consultas SQL.
 El desarrollo y cambios a futuro se realizan sobre el
optimizador SQL, que provee una serie de características
como Estadísticas, Index Advisor, Visual Explain que se
explotan desde el IBM i Access Client.
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. Esto para el caso de RPG usando OPNQRFY.
 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 para consultas
 Construir índices adicionales en base a su estadística
de utilización. Utilizar Index Advisor.
 Construir índices basados en Vector Codificado
dependiendo del tipo de consulta que se requiere
hacer y el nivel de actualización de datos. Se utiliza
para optimizar consultas cuando un campo tiene
pocos valores posibles o baja cardinalidad en
comparación a la cantidad de registros (p.e Estados
de un registro).
 Construir vistas materializadas o tablas particionadas
para mejorar la rapidez de acceso a los datos.
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
recuperado por índice 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.
Generación en Genexus
 Diagrama E-R
Generación en Genexus
 For each sin order
Generación en Genexus
 For each con order
Generación en Genexus
 For each con order pero con función en el criterio de
búsqueda
Generación en Genexus
 For each con order y en criterio de consulta con LIKE
Generación en Genexus
 For each sin order
Generación en Genexus
 For each con order
Generación en Genexus
 For each con order
Generación en Genexus
 For each sin order
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
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 IBM i (SG24-4249-03)
 DB2 Universal Database for IBM i 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 IBM i (SG24-6654-00)
 DB2 UDB for AS/400 Visual Explain
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus

Más contenido relacionado

La actualidad más candente

Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesXavier Espinoza
 
Why oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cWhy oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cSatishbabu Gunukula
 
Sap abap modularization interview questions
Sap abap modularization interview questionsSap abap modularization interview questions
Sap abap modularization interview questionsPradipta Mohanty
 
Abap function module help
Abap function module helpAbap function module help
Abap function module helpKranthi Kumar
 
Tecnicas esquemas indexados
Tecnicas esquemas indexadosTecnicas esquemas indexados
Tecnicas esquemas indexadosGiovani Ramirez
 
BW Migration to HANA Part 3 - Post-processing on the Migrated System
BW Migration to HANA Part 3 - Post-processing on the Migrated SystemBW Migration to HANA Part 3 - Post-processing on the Migrated System
BW Migration to HANA Part 3 - Post-processing on the Migrated SystemLinh Nguyen
 
Less13 performance
Less13 performanceLess13 performance
Less13 performanceAmit Bhalla
 
Enhancement framework the new way to enhance your abap systems
Enhancement framework   the new way to enhance your abap systemsEnhancement framework   the new way to enhance your abap systems
Enhancement framework the new way to enhance your abap systemsKranthi Kumar
 
Automating Your Clone in E-Business Suite R12.2
Automating Your Clone in E-Business Suite R12.2Automating Your Clone in E-Business Suite R12.2
Automating Your Clone in E-Business Suite R12.2Michael Brown
 
Building a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesBuilding a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesGaines Kergosien
 
How to use abap cds for data provisioning in bw
How to use abap cds for data provisioning in bwHow to use abap cds for data provisioning in bw
How to use abap cds for data provisioning in bwLuc Vanrobays
 
Oracle Fusion Role Mappings
Oracle Fusion Role MappingsOracle Fusion Role Mappings
Oracle Fusion Role MappingsFeras Ahmad
 
Understanding and using life event checklists in oracle hrms r12
Understanding and using life event checklists in oracle hrms r12Understanding and using life event checklists in oracle hrms r12
Understanding and using life event checklists in oracle hrms r12MuhammadAbubakar206124
 
ABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection ScreenABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection Screensapdocs. info
 

La actualidad más candente (20)

Taller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeriesTaller básico Herramientas Rendimiento DB2 en iSeries
Taller básico Herramientas Rendimiento DB2 en iSeries
 
Why oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cWhy oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19c
 
Sap abap modularization interview questions
Sap abap modularization interview questionsSap abap modularization interview questions
Sap abap modularization interview questions
 
File Manager for z/OS - Overview
File Manager for z/OS - OverviewFile Manager for z/OS - Overview
File Manager for z/OS - Overview
 
Abap function module help
Abap function module helpAbap function module help
Abap function module help
 
I doc cookbook for edi and interfaces
I doc cookbook for edi and interfacesI doc cookbook for edi and interfaces
I doc cookbook for edi and interfaces
 
Tecnicas esquemas indexados
Tecnicas esquemas indexadosTecnicas esquemas indexados
Tecnicas esquemas indexados
 
Abap reports
Abap reportsAbap reports
Abap reports
 
BW Migration to HANA Part 3 - Post-processing on the Migrated System
BW Migration to HANA Part 3 - Post-processing on the Migrated SystemBW Migration to HANA Part 3 - Post-processing on the Migrated System
BW Migration to HANA Part 3 - Post-processing on the Migrated System
 
Less13 performance
Less13 performanceLess13 performance
Less13 performance
 
Enhancement framework the new way to enhance your abap systems
Enhancement framework   the new way to enhance your abap systemsEnhancement framework   the new way to enhance your abap systems
Enhancement framework the new way to enhance your abap systems
 
Dialog programming ABAP
Dialog programming ABAPDialog programming ABAP
Dialog programming ABAP
 
Automating Your Clone in E-Business Suite R12.2
Automating Your Clone in E-Business Suite R12.2Automating Your Clone in E-Business Suite R12.2
Automating Your Clone in E-Business Suite R12.2
 
Building a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 MinutesBuilding a MVC eCommerce Site in Under 5 Minutes
Building a MVC eCommerce Site in Under 5 Minutes
 
How to use abap cds for data provisioning in bw
How to use abap cds for data provisioning in bwHow to use abap cds for data provisioning in bw
How to use abap cds for data provisioning in bw
 
Oracle Fusion Role Mappings
Oracle Fusion Role MappingsOracle Fusion Role Mappings
Oracle Fusion Role Mappings
 
Understanding and using life event checklists in oracle hrms r12
Understanding and using life event checklists in oracle hrms r12Understanding and using life event checklists in oracle hrms r12
Understanding and using life event checklists in oracle hrms r12
 
JBoss Seam vs JSF
JBoss Seam vs JSFJBoss Seam vs JSF
JBoss Seam vs JSF
 
Cobol1
Cobol1Cobol1
Cobol1
 
ABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection ScreenABAP Event-driven Programming &Selection Screen
ABAP Event-driven Programming &Selection Screen
 

Similar a Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus

Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosdevsco63
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosRobert Wolf
 
JDBC Laboratorio de Programación II
JDBC Laboratorio de Programación IIJDBC Laboratorio de Programación II
JDBC Laboratorio de Programación IIDIANA TAPIA VERA
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro ComparativoMartha
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDBliras loca
 
Comparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracleComparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracleOsmar Zaragoza
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
 
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
 

Similar a Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus (20)

Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Couch db
Couch dbCouch db
Couch db
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 
JDBC
JDBCJDBC
JDBC
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
JDBC Laboratorio de Programación II
JDBC Laboratorio de Programación IIJDBC Laboratorio de Programación II
JDBC Laboratorio de Programación II
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datos
 
E rwin
E rwinE rwin
E rwin
 
Sqlserver
SqlserverSqlserver
Sqlserver
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Obvios herramientas de un SGDB
Obvios herramientas de un SGDBObvios herramientas de un SGDB
Obvios herramientas de un SGDB
 
Actividad4cosdac
Actividad4cosdacActividad4cosdac
Actividad4cosdac
 
Comparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracleComparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracle
 
Taller 2
Taller 2Taller 2
Taller 2
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Introduction to SQL SERVER
Introduction to  SQL SERVERIntroduction to  SQL SERVER
Introduction to SQL SERVER
 
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
 

Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus

  • 2. Agenda  Componentes de software  Generación de programas en Genexus  Arquitectura del DB2 para IBM i  Herramientas de monitoreo  Recomendaciones al ejecutar y programar consultas  Documentación de referencia y enlaces de interés
  • 3.
  • 4. ¿ Por qué se planteó el Taller ?  El sistema IBM i 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.
  • 5. ¿ 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 aplicaciones nativas y cliente/servidor.  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.
  • 6.
  • 7. DB2 para IBM i  DB2 es la base de datos embebida dentro del IBM i  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, IBM i, AS/400)  DB2 para z (System z, zSeries, S/390)  DB2 para luw (Linux, UNIX, Windows, System p, System x)
  • 9. DB2 para IBM i  Ventajas de la plataforma  La “i” proviene de sistema integrado  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  Nativo (CRTPF, CLRPF, DDS)  SQL (Embebido, ODBC, JDBC, CLI)  Dos tipos de índices (Radix o Arbol Binario/Vector Codificado)  Tablas particionadas, Consultas Materializadas  Procesamiento simétrico (DB2 Symmetric Multiprocessing)
  • 10. Interfaces de acceso Aplicaciones generadas en RPG utilizan el acceso nativo sobre la base de datos (READE, SETLL, CHAIN, OPNQRYF). 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.
  • 11. Genexus  Generador de programas a partir de un conjunto común de fuentes de conocimiento (Knowledge Manager) y lenguaje neutral.  En ETAPA EP se generan programas en RPG III, JAVA y C# que usan la base de Datos DB2 contenida en un servidor IBM i.  La arquitectura de las aplicaciones generadas son las clientes :  Entorno WIN : Pantalla Verde en donde la interfaz de usuario, acceso a datos, lógica y consultas lo resuelve el propio IBM i.  Entorno WEB : Orientado a Navegador en donde corre la interfaz de usuario interpretado por el PC (HTML, JS), la lógica y el acceso a datos y consultas las realiza el Application Server (IIS) y el DB2 es repositorio de datos o puede ejecutar lógica que esta fuera de lo que controla el GX (Procedimientos Almacenados, Triggers, etc).  Existen procesos independientes que corren en Windows (C#) y dentro del sistema IBM i (Java) para modificar información.
  • 12.
  • 13. Generación en RPG  RPG Nativo, usando para la creación de bases de datos hojas DDS (Data Definition Sheets) en donde se definen “estructuras de registros” para obtener datos.  Tanto las tablas base como los índices son definidos mediante “estructuras de registros” usando DDS. También las claves primarias.  Puede usarse SQL dentro de RPG así como la activación de restricciones (FK PK NULL) pero Genexus no genera a ese nivel o no aprovecha el generador RPG de dichas características estándar.  En la lógica de obtención de datos dentro del programa RPG generado se utilizan las “estructuras de registro”.
  • 14. Generación en RPG  En Genexus se advierte la creación de índices, por cuanto es más eficiente leer una “estructura de registro” de un índice construido que formar al vuelo la información.  Si no existe un índice o este no se ha creado, el ordenamiento o selección e información se utiliza el comando OPNQRYF quien genera el “query” o “consulta”.  Las uniones de tablas o el acceso a las tablas extendidas, Genexus realiza “manualmente” la unión y no utiliza OPNQRFY para ello.  OPNQRFY es un API para creación de consultas de forma dinámica y similar a lo que realiza SQL. Se ejecuta en el CQE o Classical Query Engine.
  • 15. Generación en RPG  En Genexus RPG el programador utiliza el camino necesario para acceder a los datos o en su defecto empleará OPNQRFY.  La optimización del rendimiento se basa en utilizar las recomendaciones de escritura del código en Genexus interpretando el Navigation View y en la destreza del programador (cuantos accesos hace para obtener la información, por que medio o índice, etc).
  • 16. Generación en Java o C#  Utiliza el estándar SQL para poder manipular los datos.  La creación de la base de datos se emplea sentencias DDL de creación (CREATE TABLE, CREATE INDEX).  En ciertas bases de datos genera secuencias (CREATE SEQUENCE)  Para uniones utiliza las sentencias JOIN estándar de SQL.  Emplea ciertas construcciones de la base de datos (más optimo) según como se codifique.  Puede activarse la integridad referencial en toda la base de datos (FK, PK, Nulos).
  • 17. Generación en Java o C#  La optimización de las consultas se basa en la destreza del programador para obtener la información y en emplear las herramientas de rendimiento del servidor IBM i.  A diferencia de RPG el “Gestor de la Base de Datos” es quien decide por que camino ir para obtener la información. Obviamente al “Gestor” hay que indicarle las opciones y este también decide por donde ir o sugiere que se debe hacer para la mejora respectiva.  Se deben emplear las opciones existentes en el servidor para ajustar las consultas.
  • 18.
  • 19. Arquitectura de Procesamiento de consultas y aplicaciones 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 - OPNQRYF utilizan el acceso nativo y tienen cierto nivel de optimización dentro del sistema operativo (CQE).
  • 20. Optimizadores 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.
  • 21. Esquema de Procesamiento de consultas  Fases de ejecución de una consulta (Query/SQL):  Validación de la consulta  Validación de la petición realizada  Validación de planes existentes (Cache de Consultas)  Creación de estructuras internas de la consulta  Despacho de la consulta  Determinar que componente de optimización (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
  • 22. Características del Optimizador  El “Optimizador” de consultas en la base de datos DB2 para IBM i 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.
  • 23. En resumen  El acceso nativo desde los programas RPG no se beneficia del optimizador. Depende de como se escribe y se diseña el programa.  El optimizador clásico se dispara únicamente en consultas Query/400 y OPNQRFY.  El acceso SQL y Query/400 utiliza el componente de optimización de consultas de la base de datos.  El optimizador SQL se dispara para consultas SQL.  El desarrollo y cambios a futuro se realizan sobre el optimizador SQL, que provee una serie de características como Estadísticas, Index Advisor, Visual Explain que se explotan desde el IBM i Access Client.
  • 24.
  • 25. 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
  • 26. Herramientas de Monitoreo SQL  Explicación demostrativa
  • 27.
  • 28. 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. Esto para el caso de RPG usando OPNQRFY.  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.
  • 29. Recomendaciones para consultas  Construir índices adicionales en base a su estadística de utilización. Utilizar Index Advisor.  Construir índices basados en Vector Codificado dependiendo del tipo de consulta que se requiere hacer y el nivel de actualización de datos. Se utiliza para optimizar consultas cuando un campo tiene pocos valores posibles o baja cardinalidad en comparación a la cantidad de registros (p.e Estados de un registro).  Construir vistas materializadas o tablas particionadas para mejorar la rapidez de acceso a los datos.
  • 30. 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.
  • 31. 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.
  • 32. 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 recuperado por índice se aplican los “Constraint”
  • 33. 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.
  • 35. Generación en Genexus  For each sin order
  • 36. Generación en Genexus  For each con order
  • 37. Generación en Genexus  For each con order pero con función en el criterio de búsqueda
  • 38. Generación en Genexus  For each con order y en criterio de consulta con LIKE
  • 39. Generación en Genexus  For each sin order
  • 40. Generación en Genexus  For each con order
  • 41. Generación en Genexus  For each con order
  • 42. Generación en Genexus  For each sin order
  • 43. 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
  • 44. 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 IBM i (SG24-4249-03)  DB2 Universal Database for IBM i 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 IBM i (SG24-6654-00)  DB2 UDB for AS/400 Visual Explain

Notas del editor

  1. Se presenta la agenda.
  2. 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.
  3. 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.
  4. La ventaja del
  5. 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. En el medio y a nivel pais es algo no muy común.
  6. A la base de datos se accede externamente mediante protocolos de corriente principal (TCP/IP). Destacar el acceso nativo y via SQL al DB2. El DB2 es un componente del sistema operativo y se apoya en el para funcionar. Destacar que el servidor i pretende consolidar varios servicios dentro del propio sistema y administrados desde una sola interfaz. Destacar el particionamiento que se puede hacer en el equipo para correr linux y windows. Destacar el acceso nativo via Query /400 y DDS.
  7. Se destaca el proceso de consultas de via Query o SQL. La forma nativa no se incluye por cuanto es el programador quien decide por que camino ir. Se describe el proceso por parte del gestor de la base de datos considerando ademas de que si ya fue optimizada una consulta se reutiliza su optimización (Cache de Consultas).
  8. Se destaca el proceso de consultas de via Query o SQL. La forma nativa no se incluye por cuanto es el programador quien decide por que camino ir. Se describe el proceso por parte del gestor de la base de datos considerando ademas de que si ya fue optimizada una consulta se reutiliza su optimización (Cache de Consultas).
  9. Se destaca el proceso de consultas de via Query o SQL. La forma nativa no se incluye por cuanto es el programador quien decide por que camino ir. Se describe el proceso por parte del gestor de la base de datos considerando ademas de que si ya fue optimizada una consulta se reutiliza su optimización (Cache de Consultas).
  10. Se destaca el proceso de consultas de via Query o SQL. La forma nativa no se incluye por cuanto es el programador quien decide por que camino ir. Se describe el proceso por parte del gestor de la base de datos considerando ademas de que si ya fue optimizada una consulta se reutiliza su optimización (Cache de Consultas).
  11. Como se procesan las consultas dentro del DB2 El cuadro rojo identifica el esquema de proceso dentro de DB2. Static para SQL estaticos incluidos en programas RPG, Dinámicos para consultas, y Extended Dinamico para consultas concurrentes que ya se proceso su forma de acceso. Dentro del gestor de la base de datos existen 2 “optimizadores de consultas”. El clasico o CQE que se ha venido mejorando desde el v5r2 y el SQE como nueva versión del optimizador. Este ultimo esta más orientado a consultas SQL y lo que optimiza el CQE se pasa en los diferentes releases al SQE. El acceso nativo es directo a las tablas y depende completamente del programador. El acceso no nativo via Query400 se optimiza en el CQE y todo el SQL se optimiza en el SQE.
  12. Se destaca el proceso de consultas de via Query o SQL. La forma nativa no se incluye por cuanto es el programador quien decide por que camino ir. Se describe el proceso por parte del gestor de la base de datos considerando ademas de que si ya fue optimizada una consulta se reutiliza su optimización (Cache de Consultas).
  13. 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.
  14. 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.
  15. Probar el STRQMQRY para correr una consulta Query400 dentro del optimizador y visualizarlo en el IBM i Access Client. 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.
  16. Probar el STRQMQRY para correr una consulta Query400 dentro del optimizador y visualizarlo en el IBM i Access Client. Radix index: Indice basado en arbol binario. 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.
  17. 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
  18. 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
  19. 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