Sei sulla pagina 1di 97

ABAP Tools

BC490 - Herramientas de análisis de


rendimiento ABAP

Barcelona, fecha 15/01/2014


confidencialidad
Aviso: Este documento es material confidencial y propiedad de everis. Se prohíbe
el uso, reproducción o la divulgación del contenido de este material sin permiso
previo y por escrito de la empresa propietaria.

Derechos de Autor
© 2007, everis. All rights reserved

2
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

3
Introducción ABAP Tuning
Introducción

Todos los programas ABAP deberían desarrollarse utilizando los medios más
eficientes posibles.

El desarrollo de una programación eficiente implica el uso eficiente de la


programación estándares, herramientas de SAP ABAP Workbench y herramientas de
supervisión del rendimiento en ABAP.

4
Introducción ABAP Tuning
¿Qué es la programación eficiente?

Programación eficiente implica resolver un problema tan rápido como sea posible
mientras que los recursos del sistema son usados con la mayor moderación posible.

De “normal” las sentencias ABAP se


ejecutan dentro de unos microsegundos.

Acceder a una base de datos normal se


necesita unos poco milisegundos o
incluso segundos para devolver los
resultados.

Nota el acceso a la base datos es el


gran problema del rendimiento.

5
Introducción ABAP Tuning
Factores que impactan el rendimiento de aplicaciones

• Estructura de un programa
Programador/a • Programación lenguaje de comandos / sintaxis
• Sentencias SQL
ABAP • Operaciones entrada / salida

• Organización de la Base de Datos


• Los volúmenes de datos / estrategia de archivado
BASIS • Sistema de tamaño / configuración
• Sistema de configuración / balance de carga

6
Introducción ABAP Tuning
Rendimiento responsabilidad de Programador/a ABAP

 Estructura del programa


Grado de modularización (uso de subrutinas, módulos de funciones, …) y el
grado de anidamiento (bucles aniñados e instrucciones de control) impactan
en el rendimiento del programa.

 Programación lenguaje de comandos / sintaxis


Ciertas declaraciones ABAP son más costos que otros. Trabajar con una
declaración ineficaz cuando existe una alternativa más eficiente, afecta en el
rendimiento del programa.

 Sentencias SQL
La eficiencia de las sentencias SQL pueden afectar drásticamente el
rendimiento del programa.

 Operaciones entradas/salidas
La cantidad de lectura y escritura a base de datos de un programa tendrá un
impacto en el rendimiento del programa. Se debe ir con cuidado para eliminar
cualquier entrada/salida innecesaria.
7
Introducción ABAP Tuning
Rendimiento responsabilidad de BASIS

 Organización de la Base de Datos


La forma en que la base de datos está organizada en el disco físico afecta el
rendimiento.

 Los volúmenes de datos / estrategia de archivado


La cantidad de datos almacenados en cada tabla de base de datos afecta en
el rendimiento del programa.

 Sistema de tamaño / configuración


El hardware utilizado debe ser del tamaño apropiado para apoyar el número
de usuarios y los volúmenes de datos esperados del rendimiento afectados
de forma significativa.

 Sistema de configuración / balance de carga


El número apropiado de servidores de aplicación debe existir para satisfacer
las necesidades de procedimiento. Los usuarios y las tareas en fondo debe
estar convenientemente repartida entre los servidores.

8
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

9
Arquitectura del Sistema SAP para
desarrolladores ABAP
Arquitectura del Sistema SAP

Las tres diferentes


capas lógicas de la
arquitectura son:

• Presentación.
• Aplicación.
• Base de Datos.

10
Arquitectura del Sistema SAP para
desarrolladores ABAP
Tiempos de respuesta que pueden influir en el desarrollo

11
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

12
Performance Analysis Tools
Inicio

Aquí se va a detallar los programas que se puede utilizar para el análisis de tiempo
de ejecución, cuándo y cómo se usan y qué procedimientos se recomienda en
cada situación en particular.

Hay varias herramientas que se pueden utilizar para el análisis de los problemas
de rendimiento según los diferentes puntos en el tiempo que se den.

13
Performance Analysis Tools
Herramientas

Aquí se va a detallar los programas que se puede utilizar para el análisis de tiempo
de ejecución, cuándo y cómo se usan y qué procedimientos se recomienda en
cada situación en particular.

Hay varias herramientas que se pueden utilizar para el análisis de los problemas
de rendimiento según los diferentes puntos en el tiempo que se den.

¿Que herramientas conocéis ?

14
Performance Analysis Tools
Herramientas

Transacción Descripción
SE30 – ABPA Trace Con el análisis de tiempo de ejecución se
puede analizar el desempeño de los
programas ABAP.
ST05 – Performance Trace – SQL Trace Con la traza de SQL, se puede rastrear
los accesos a la BD y cuánto tiempo
toma el acceso a ellas (base de datos).
ST05 – Performance Trace – Buffer Con la traza de Buffer, se puede analizar
Trace los accesos a la tabla buffer, y cuanto
tiempo toma el acceso y cuanto tiempo la
tabla buffer esta cargada.
ST05 – Performance Trace – RFC Trace Con la traza de RFC, se puede analizar
el rastreo de las llamadas remotas que
su aplicación se ejecuta, en qué
dirección van, qué cantidad de datos se
han transferido y la duración de las
llamadas tomó.
15
Performance Analysis Tools
Herramientas

Transacción Descripción
ST05 – Performance Trace – Enqueue Con la traza de Enqueue, puede
Trace determinar qué enqueue solicita su
aplicación o el sistema SAP ejecuta en
objetos de bloqueo que, y qué
parámetros usa el sistema para estos
pone en cola.
ST12 – ABAP and Performance Trace Mediante la transacción ST12, puede
iniciar transacciones SE30 y ST05
juntos. Por otra parte, se puede evaluar
la traza ABAP con opciones adicionales
en comparación a transacciones SE30.
STAD – Business Transaction Analysis La pantalla de registros estadísticos
permite mostrar los registros estadísticos
de las solicitudes y evaluarlos.

16
Performance Analysis Tools
Herramientas

Transacción Descripción
SM50/SM66 – Work Process Monitor Se puede utilizar “work process monitor”
para obtener información sobre procesos
que se están ejecutando en el momento.
S_MEMORY_INSPECTOR – Memory Es una herramienta para visualizar y
Inspector analizar instantáneas de memoria.
ST22 – ABAP Dump Analysis Si se produjo un error de ejecución en un
programa ABAP, usted tiene la opción de
acceder a la información asociada a la
terminación y analizarla.
OK-Code /h or /ha – ABAP Debugger El depurador es una herramienta de
análisis que se ejecutan programas
ABAP por línea o por sección. Usted
puede utilizar el depurador de ABAP para
mostrar el contenido de los objetos de
datos y verificar la lógica de flujo de los
programas.
17
Performance Analysis Tools
Herramientas

Transacción Descripción
DB05 – Selectivity Analysis Usted puede utilizar el análisis de
selectividad para analizar el número de
valores únicos de un campo (o
combinaciones de campo) de una tabla
de base de datos. Además, puede usar
esta operación para determinar el
tamaño de las tablas que se admiten
para ser amortiguada. (to be buffered).
ST10 – Table Call Statistics Con base en las estadísticas de tabla de
llamadas, puede hacer que el sistema
muestre las estadísticas de llamadas
para tablas almacenadas en búfer o sin
búfer. Para tablas almacenadas en búfer,
el sistema muestra el estado de la tabla
en la memoria intermedia.

18
Performance Analysis Tools
Tiempos de uso de las Herramientas – Sistemas SAP
Las herramientas se pueden utilizar en diferentes puntos en el tiempo y en diferentes
sistemas. Para los sistemas SAP, se puede distinguir entre desarrollo, pruebas y
producción.

19
Performance Analysis Tools
Tiempos de uso de las Herramientas – Programas SAP
Para un programa, a diferenciar el desarrollo, ejecución y tiempo de ejecución.

20
Performance Analysis Tools
Trazas de rendimiento
Las trazas más importantes para el análisis del rendimiento son:

21
Performance Analysis Tools
SAP Code Inspector (Transacción SCI)
El inspector de código permite el análisis de la definición estática de código ABAP y
otros objetos del repositorio. Dentro del alcance de prueba de rendimiento
automatizado utilizando la transacción ST30. El inspector de código también es
compatible con el análisis de trazas de SQL que se ejecutan dinámicamente código.

El inspector del código examina la codificación interna, mientras que las trazas sólo
examinan las partes de código ejecutadas. Debido a las pruebas estáticas, las
notificaciones del inspector del código proporcionar información sobre posibles
problemas, mientras que los resultados de las trazas se miden valores que indican
problemas definitivos.

Los grupos destinatarios para el cual se desarrolló el inspector del código son los
desarrolladores y administradores de calidad.

El inspector del código cubre diferentes categorías de pruebas. Por ejemplo incluye
controles generales, control de rendimiento, controles de seguridad, controles de
sintaxis generada, convenciones de programación, métricas y estadísticas, interfaces
de usuarios, búsqueda de funciones, control de la aplicación, etcétera.

22
Performance Analysis Tools
SAP Code Inspector (Transacción SCI)

En Selección de objetos (Object Selection) en


la parte superior de la pantalla se puede
especifican los objetos que se suponen para ser
revisado.

Para la variante de verificación (Check Variant),


puede seleccionar una variante de verificación
predefinida o configurar una variante cheque
temporal.

23
Performance Analysis Tools
Análisis Selectivo (Transacción DB05)
El uso de Transacción DB05 asume un volumen de datos representativa. El análisis
de selectividad es una herramienta para analizar la distribución de datos y para
definir el tamaño de las tablas. Por lo general, esta herramienta se utiliza para el
diseño de índice y para el análisis de tablas de almacenamiento en búfer.
Para las grandes tablas,
seleccione la opción del trabajo en
segundo plano para no bloquear el
proceso de diálogo por mucho
tiempo o para no recibir un tiempo
de espera en el diálogo.

En la figura se muestra, la tabla de


un solo registro T100, el cual
contiene los textos de aviso.

24
Performance Analysis Tools
Análisis Selectivo (Transacción DB05)
El resultado del análisis se muestra en la figura.
En el caso que se lance en fondo el resultado se encuentra en la transacción
SM37.
El área superior de la pantalla de resultados contiene el análisis del tamaño de
la tabla. Puede ver los datos, el tiempo y la tabla analizada, así como el número
de filas (cross-cliente) y la longitud de una fila. Unicode y la longitud fija de los
campos en ABAP se tienen en cuenta aquí.

Estos dos valores


determinan el uso de
la memoria, que la
mesa se requiere para
una amortiguación
completa en el búfer
de tabla. El último
campo indica el
estado de memoria
intermedia actual de la
tabla analizada.
25
Performance Analysis Tools
Análisis Selectivo (Transacción DB05)

Transacción DB05 es una herramienta indispensable para la decisión de las


tablas se supone que ser amortiguada y con respecto a la determinación del
tamaño. Además, también proporciona cierto apoyo a la selectividad y los
análisis de distribución de sentencias SQL.

Nótese, sin embargo, que en un sistema de producción debe implementar el


análisis de tablas de gran tamaño sólo en los períodos de carga baja.

26
Performance Analysis Tools
Proceso del Programa (Transacción SM50/SM66)
El análisis de procesos es una herramienta para la administración del sistema y
contiene muchas funciones y opciones de análisis cuyas descripciones no van
a ser tratadas hoy.

Se pueden utilizar dentro del alcance de un análisis de rendimiento de


programas ABAP, por lo general, cuando se trata de programas que tienen un
largo tiempo de ejecución - por ejemplo, programas que se ejecutan en el fondo
o en el cuadro de diálogo durante un período de tiempo más largo. Los
programas con un tiempo de ejecución corto se analizan usando herramientas
diferentes, que se describen más adelante.

Supongamos que un programa se ejecuta más de lo esperado. Si el programa


está aún en ejecución, se puede utilizar esta herramienta para encontrar lo que
está haciendo el programa. Así que usted no puede analizar las acciones
pasadas ni futuras acciones que aún están por ser ejecutados en el programa,
sólo los que se están ejecutando en el momento.

27
Performance Analysis Tools
Proceso del Programa (Transacción SM50/SM66)
Un proceso de trabajo ABAP puede asumir cuatro estados:

1. Waiting (esperando) – El proceso es interactivo y de libre acceso para las


consultas.
2. Running (en proceso) – El proceso está ejecutando un programa ABAP.
3. On Hold (en espera) – El proceso está inactivo y en espera. Esto implica
una espera real, por ejemplo, para la liberación de
un recurso o terminación de un RFC sincronizado
(Una llamada de una función en remoto).
4. Stopped (parado) – El proceso fue anulado y no reiniciado.

28
Performance Analysis Tools
Proceso del Programa (Transacción SM50/SM66)
Para el RUNNING, se puede obtener más información en la columna Action.
Principalmente hay tres acciones:

Acciones a la Base de Datos


Incluye: SEQUENTIAL READ, DIRECT READ, INSERT, UPDATE, DELETE y
COMMIT. Esto significa que el proceso de base de datos o de temas de base de
datos que pertenece al proceso de trabajo está ocupada actualmente con una
de estas acciones.

Acciones al Sistema SAP


Incluye: LOAD REPORT, LOAD CUA, ROLL-IN, ROLL-OUT.
Esto significa que el proceso esta ocupado con una acción del sistema SAP, por
ejemplo la carga de un programa.

Sin acción (el campo de la acción está vacío)


Esto implica generalmente el procesamiento real ABAP e incluye la ejecución de
bucles o lee en el programa de ABAP.

29
Performance Analysis Tools
Proceso del Programa (Transacción SM50/SM66)

Puede establecer si un programa está en una


acción de base de datos, situación de espera,
o en ejecución ABAP para luego continuar el
análisis con una herramienta más detallada
(traza). A través de la vista detallada (haga
doble clic en la fila del proceso), se obtiene
una visión general del procesamiento de base
de datos previamente grabados (llamadas, fila,
tiempo) y el uso actual de la memoria del
programa. 30
Performance Analysis Tools
Debugger – Análisis de Memoria
Por supuesto, el depurador se utiliza principalmente para la solución de problemas
durante el desarrollo y para el análisis del flujo del programa.

Grande tablas internas pueden influir negativamente en el tiempo de ejecución (y


utilizar la memoria), en particular si los accesos a las tablas no son óptimas.

En el depurador, utiliza el análisis de la memoria para ver una lista de los objetos de
datos más grandes.

Otra de las funciones del depurador es la creación de instantáneas de memoria para


el análisis futuro en el Inspector de memoria.

31
Performance Analysis Tools
Debugger – Análisis de Memoria

En la figura se muestra cómo


llamar a estas funciones en el
nuevo Depurador. Muestra la
herramienta de análisis de
memoria haciendo clic en el botón
para obtener una nueva
herramienta y luego seleccione el
análisis de la memoria por debajo
de las herramientas especiales,
como se muestra en el paso 1. La
pantalla inicial muestra cuánta
memoria asigna analizados modo
interno o usos.

La lista de los objetos más grandes, puede utilizar el BOTÓN MEMORY OBJETOS, para
mostrar la lista de los objetos más grandes de memoria (paso 2).

32
Performance Analysis Tools
Memory Inspector (Transacción S_MEMORY_INSPECTOR)
Se utiliza para el análisis de instantáneas de memoria.

El Inspector de Memoria considera los datos de objeto dinámico, como las tablas
internas. Al iniciar el Inspector de memoria, el sistema muestra una pantalla que
se divide en dos partes ven en la siguiente función.

33
Performance Analysis Tools
Llamada a la tabla de estadísticas (Transacción ST10)
Transacción ST10 fue asignado al análisis en tiempo de ejecución para señalar que
el estado de las tablas almacenadas en búfer debe ser analizado inmediatamente,
es decir, en tiempo de ejecución, porque el estado de las tablas almacenadas en
búfer puede cambiar. No debe usar transacción ST10 hasta que se asume que no
es la instrucción SQL la que impide el acceso a la memoria intermedia.

Para determinar el estado de almacenador intermediario de una tabla, iniciar la


transacción ST10 y seleccionar la configuración de las tablas de forma genérica o
de un solo registro-buffer dependiendo de la zona de amortiguamiento que desea
analizar. Deje la configuración de inicio SINCE STARTUP (sin cambios) y
seleccionar el servidor de aplicaciones actual con servidor, lo que permite acceder
en este momento u otro en función del servidor para el que desea llevar a cabo el
análisis.

34
Performance Analysis Tools
Llamada a la tabla de estadísticas (Transacción ST10)

35
Performance Analysis Tools
Performance Trace – Información General (ST05)
El rendimiento se puede subdividir en las siguientes áreas:
1. SQL trace.
2. RFC trace.
3. Enqueue trace.
4. Tabla de seguimiento del Buffer

La traza SQL es el más importante y la más frecuentemente utilizada entre las


trazas de rendimiento.

Todas las trazas tienen en común que trabajan a nivel de servidor de


aplicaciones. Esto significa que sólo un usuario puede activar el rastreo por
servidor de aplicaciones, y el sistema sólo registra las acciones de este
servidor de aplicaciones.

Por esta razón, se debe verificar en el campo Estado TRACE si un trazo ya


está activo, si es así solo se podrá activar otra diferente en cuanto el estado ya
no este activo.

36
Performance Analysis Tools
Performance Trace – Información General (ST05)
Como funciona la transacción.

37
Performance Analysis Tools
ABAP Trace ( Transacción SE30)
Puede analizar el desempeño de los programas ABAP. Los resultados de la
traza se guardan en archivos que luego se puede analizar. En base a estos
resultados se puede identificar la larga durada de los estados de carga que se
llama con frecuencia en a la CPU del servidor de aplicaciones.

El uso de la transacción SE30 también se puede analizar la jerarquía de


llamadas de un programa para analizar el flujo del programa o detectar
unidades de modularización que tal vez fueron llamados innecesariamente.

Todos los programas constan de declaraciones ABAP individuales ejecutados


por la máquina virtual de ABAP (Virtual Machine) en el proceso de trabajo.
Estas declaraciones ABAP pueden repercutir en un rendimiento
potencialmente crítico.

Durante la ejecución de programas ABAP, el VM ABAP mide el rendimiento de


estos eventos, si la traza ABAP se activa (grabación de las marcas de tiempo
antes y después del evento) y escribe los resultados en el archivo de
seguimiento después de que se haya completado.

38
Performance Analysis Tools
ABAP Trace ( Transacción SE30 )
Estructura de la transacción SE30
1. Antes de registrar una traza, hay
variantes que especifican qué datos
deben ser registrados.

2. La traza se activa entonces. Esto


puede llevarse a cabo para la sesión
actual para el que está directamente el
programa a ser analizado inicialmente
o en la sesión paralela para ya se está
ejecutando programas para los que se
registra una sección en las solicitudes
de seguimiento se establecen en la
memoria compartida y para cada rollo
3. Una vez que el rastro se grabó el análisis lo en la de un contexto de usuario, el
lleva a la visión general que muestra sistema verifica si una traza se va a
información inicial sobre la traza. La información activar.
más importante es la subdivisión en ABAP, base
de datos, y la hora del sistema. 39
Performance Analysis Tools
ABAP Trace ( Transacción SE30 )
Definición de la variante de medición.

La medición de las
unidades particulares,
será especialmente útil
para la aplicación de
diálogo con múltiples
pantallas o pasos y que
solo se quiere análizar
una de sola.

40
Performance Analysis Tools
ABAP Trace ( Transacción SE30 )
Crear trazas

Evaluar trazas
41
Performance Analysis Tools
ABAP Trace ( Transacción SE30 )

Para atención en:


• Unidades de Modularización (módulos de funciones, métodos, forms….)
• Llamadas al RFC
• Tablas Internas
• Accesos a las base de datos
• Eventos Futuros.

42
Performance Analysis Tools
Tips & Tricks (SE30  )

Esta transacción dispone de una serie de ejemplos de rendimiento con consejos


que no deberíamos pasar por alto.

43
Performance Analysis Tools
Single transaction analysis( Transacción ST12 )
En comparación con la transacción SE30, Transacción ST12 proporciona beneficios
tanto en relación con el registro y la evaluación de trazas agregados. Por ejemplo,
puede utilizar Transacción SE12 para activar una traza ABAP junto con un rastreo de
rendimiento (transacción ST05).

44
Performance Analysis Tools
Single transaction analysis( Transacción ST12 )

45
Performance Analysis Tools
Single transaction analysis( Transacción ST12 )

Por ejemplo puede insertar el copiado resumen SQL rastro de transacción


ST05 para almacenar los eventos más importantes de la traza SQL junto
con el ABAP en la base de datos.

46
Performance Analysis Tools
E2E Trace

Con base en el seguimiento


de extremo a extremo, puede
grabar las huellas a través de
los límites del sistema
heredando las marcas de
traza. También es posible
rastrear no ABAP sistemas
(para los casos, las instancias
de Java).

47
Performance Analysis Tools
Sinlge Record Statistics (Transacción STAD)
No necesita ser activa, ya lo esta por
defecto.
Esto significa que los parámetros más
críticos que todavía puede ser analizada
cuando el programa se esta ejecutando.
1. Display Mode Aquí puede especificar
cómo los datos deben ser formateados.
2. Read Interval Aquí se especifica la fecha
y hora en que desea analizar las
estadísticas de los registros individuales.
Además se debe introducir un intervalo.
3. Filter Parameter Aquí se pueden
establecer filtros diferentes para buscar
los registros deseados estadísticos.
4. Tools Aquí se puede establecer las
herramientas que se van a usar.

48
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

49
Procesos en Paralelo
Introducción

En esta sección se ofrece un resumen de las preguntas más críticas relacionadas


con procesamiento paralelo.

Las aplicaciones que necesitan procesar datos en masa debe ser capaces de
procesar en paquetes y en paralelo, por lo que puede adaptarse de forma flexible a
los recursos de hardware propuestos y utilizar estos recursos de forma apropiada.

Se debe haber considerado los aspectos del procesamiento en paralelo durante la


fase de diseño de la aplicación.

Los aspectos más críticos a tener en cuenta son: el empaquetado y procesamiento


en paralelo.

50
Procesos en Paralelo
Empaquetado (packaging)

En contraste con el proceso individual donde los objetos (archivos de datos) se


procesan por separado, el procesamiento de paquete que permite procesar varios
objetos (conjuntos de datos) en un paquete.

El procesamiento del paquete


ahorra tiempo, ya que permite un
procesamiento más eficiente.
Se puede adaptar el programa en
distintos requerimientos (memoria
disponible, o configurar la base de
datos de forma distinta).

51
Procesos en Paralelo
Proceso en Paralelo

Como dice la palabra y como se ve en la imagen trabajar en procesos en paralelo


permite trabajar más rápido.
En general, el procesamiento en
paralelo con los trabajos por lotes
en lugar de otro adecuado para
largos procesos que pueden estar
bien distribuidos en paquetes
estáticos. De lo contrario, usted
debe desarrollar el programa
apropiado principal que realiza las
tareas dinámicas (distribución,
reiniciar, comprobaciones de
estado, y así sucesivamente)

52
Procesos en Paralelo
Ejemplo (Caso de Negocio)

Requerimiento: Procesar una gran cantidad de datos que nos proporcionarán a


través de un Excel y actualizar un Infotipo HR.

Factores a tener en cuenta: Desafortunadamente, el Módulo de Funciones que


actualiza un Infotipo (HR_INFOTYPE_OPERATION) solamente procesa uno a la vez.
Por lo que no tendremos otra opción que procesarlo dentro de un LOOP… lo cuál
podría llevarnos a un timeout ya que el volumen de datos es muy grande.

Tip: Pensar en una solución utilizando Parallel Processing (asíncrona) 

53
Procesos en Paralelo
Ejemplo (Caso de Negocio)

Paso 1: Crear una tabla Z con la siguiente estructura

54
Procesos en Paralelo
Proceso en Paralelo (Ejemplo)

Paso 2: Crear un módulo de funciones que actualiza los datos a la tabla uno a uno.

55
Procesos en Paralelo
Proceso en Paralelo (Ejemplo)

Paso 3: Crear 2 programas, uno con cursor paralelo y otro sin y comparar el
rendimiento de ambos.

Without parallel processing With parallel processing

56
Procesos en Paralelo
Limitaciones de este método de optimización

• El procesamiento en paralelo no es adecuado para aquellos datos que se van a


procesar secuencialmente. Solamente aquel trabajo que pueda desarrollarse de
forma independiente podrá ser utilizado con esta técnica

• Todos los módulos de funciones que están habilitados como RFC pueden usar
esta técnica

• Especificar el grupo en el que va a ser ejecutado el RFC con la tx. RZ12

57
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

58
Proceso de datos con SQL
Arquitectura
En cuanto a la arquitectura descrita anteriormente, el cuello de botella
siguiente son posibles.
- Conexión entre la Base de Datos y el servidor SAP NetWeaver AS.
- La disposición de la CPU.
- La disposición de la memoria principal.
- La conexión entre la Base de Datos y el almacenamiento del sistema.
- El rendimiento del sistema de almacenamiento

59
Proceso de datos con SQL
Eficiencia SQL – Principos Basicos
Hay cuatro factores principales que influyen:
- La estrategia de acceso y el volumen de datos de navegación.
- El conjunto resultante.
- La frecuencia de ejecución.
- La utilización de API (Application Programming Interface)

La estrategia de acceso y el conjunto resultante tendrá el mayor impacto en el


rendimiento de una sentencia SQL.
La frecuencia de ejecución a menudo se hace cargo de un papel menor, pero sin
embargo puede conducir a diferencias medibles en el rendimiento. La API utiliza
juega un papel aún más pequeño pero es necesario mencionarlo.
El número y la velocidad de la CPU, el espacio disponible de memoria principal, y
el rendimiento de los discos duros influye en el rendimiento de SQL
significativamente. Sin embargo, debido a que el hardware está más allá del
control del desarrollador ABAP, hablaremos de las sentencias SQL.

60
Proceso de datos con SQL
Conjunto Resultante – Acceder a la tabla

Dentro de SAP NetWeaver AS ABAP, mediante ST05 puede realizar un rastreo de


rendimiento. DB02 - puede utilizar los
MISSING INDICES
función para comprobar si
existen índices que no se
han creado en la base de
datos.

La especificación de las condiciones negativas puede conducir a un índice ineficiente uso.

Usar siempre que sea posible la condición WHERE en positivo.


61
Proceso de datos con SQL
Conjunto Resultante - Reducir
Reducir Columnas
Para reducir el volumen de datos, especifique sólo las columnas que el programa realmente
requiere.
INTO CORRESPONDING
FIELDS OF, usar solo
cuando sea necesario ya
que puede influir en el
rendimiento.

Reducir Filas
Para reducir el volumen de datos, especifique sólo las columnas que el programa realmente
requiere.
Restringir con
WHERE el volumen
de datos.

62
Proceso de datos con SQL
Conjunto Resultante -
Lectura de un número determinado de filas

Para las condiciones WHERE, también es importante que el número de filas se


mantenga tan constante como sea posible en el tiempo. Si se leen tablas como
(BKPF, BSEG, COBK, COEP, LIPK, MKPF, VBAK, VBAP), se debe asegurar que
el número de registros de datos seleccionados se mantenga constante en el
tiempo y no se aumente significativamente como lo hacen las tablas. Una
posibilidad seria añadir una restricción con una fecha o estados en los campos de
estado.

63
Proceso de datos con SQL
Conjunto Resultante - Agregación

Evitar los SELECT, ENDSELECT y


aprovechar las funciones que tienen SQL.

Funciones de agregación:
• Contar (count)
• Sumar (sum)
• Mínimo Valor (min)
• Máximo Valor (max)
• Promedio Valor (avg)

64
Proceso de datos con SQL
Conjunto Resultante - Comprobaciones / Actualizaciones

Comprobaciones
Si desea determinar si una tabla contiene registros de datos de una
condición particular.

Actualizaciones
El sistema transfiere la actualización de la base de datos.

En el primer caso se actualizan todos los datos independientemente si han sido


modificados o no. En el segundo cas la actualización se restringe, aumentando
el rendimiento.

65
Proceso de datos con SQL
Diseñar Índices
Antes de crear un índices es importante saber para que sentencia SQL se va usar. Esta
cuestión se puede abordar de diferentes prospectivas.
• Perspectiva des del desarrollo de aplicaciones.
Esto por lo general consiste en reducir el tiempo de respuesta de larga ejecución de
sentencias de SQL en el programa para el que los usuarios tengan que esperar o que
debe completarse dentro de un período definido de tiempo debido al procesamiento
durante la noche. En comparación con otras, estas declaraciones pueden ser
relativamente rápidas.
• Perspectiva desde la administración del sistema.
Desde el punto de vista de la administración del sistema, las sentencias SQL que
consumen la mayoría de los recursos son de particular interés. Esta instrucción SQL
consume recursos y afecta el rendimiento del sistema (y por consiguiente otras
aplicaciones que se ejecutan al mismo tiempo).
Reglas a la hora de crear índices
• No se debe crear más de cinco índices a cada tabla.
• Un índice no debe contener más de cinco columnas.
• Las columnas deben ser ordenados por su selectividad.

66
Proceso de datos con SQL
Diseñar Índices – Leer o Escribir Procesamiento
• Las declaraciones INSERT y DELETE siempre hay que mantener todos los índices
existentes para cualquier registro de dato insertado o suprimido.
• La declaración UPDATE, tiene que mantener todos los índices que contienen campos
que deberían ser actualizados.

67
Proceso de datos con SQL
Diseñar Índices – Acceder Procesamiento
Para las combinaciones de campo, a menudo se recomienda colocar los campos más
selectivos en la secuencia de campo a la izquierda en el índice. Esta recomendación es
cierto en general.

68
Proceso de datos con SQL
Ejecución Frecuente
No se puede acelerar una sentencia SQL. Solo se puede mejorar el rendimiento si la
declaración se ejecuta con menos frecuencia.

Por ejemplo; comparación de SELECT/ENDSELECT y SELECT INTO TABLE.

Hay varias opciones para


optimizar los comandos
SELECT, en bucles o
anidados.
• Vistas
• Join
• FOR ALL ENTRIES

Nota: Evitar la transferencia de datos entre la base de datos lo


mínimo posible, ya que es el “cuello de botella”, que peca más en
el rendimiento. 69
Proceso de datos con SQL
Ejecución Frecuente - Vistas
Las vistas dvbiew se crean en la se11, donde se deben realizar las siguientes
especificaciones:
• Las tablas y los campos con el que las tablas deben estar vinculadas (condición de
unión).
• Los campos de las tablas que se pueden seleccionar.

En la transacción ST05, no indica las condiciones


cuando se accede a la vista.

Ventajas
• Los campos contenidos en ambos tablas se transfieren sólo una vez.
• Optimización de la base de datos.
• A medida que se consulta la VISTA, esta reduce el numero de consultas a
la base de datos, reduciendo el esfuerzo de comunicación.

70
Proceso de datos con SQL
Ejecución Frecuente - Join
La diferencia con las Vistas es que los Join son más flexibles. El problema es
que se deben indicar con hard-code.

71
Proceso de datos con SQL
Ejecución Frecuente – FOR ALL ENTRIES
El FOR ALL ENTRIES, es una opción elegante para agrupar sentencias SELECT en bucle para
reducir aún más el número de consultas y el esfuerzo de comunicación con la base de datos.

Restricciones de FAE (FOR ALL ENTRIES).

• Se puede ordenar el FAE del comando SELECT solo mediante la clave primaria (ORDER
BY PRIMARY KEY).
• Las funciones de agregados (GROUP BY, COUNT, SUM, …) no están permitidas en la
FAE.
• No igual (<>) o condiciones negativas (NOT) no están permitidas en la FAE.
• No esta permitido el uso de más de una tabla interna para el FAE.

En términos de rendimiento es importante tener en cuenta los dos siguientes aspectos para FAE:

• Para consultas FAE, no utilice tablas complejas alcance, además de evitar que el sistema
genera sentencias SQL complejas.
• La tabla interna utilizados para la declaración FAE no debe estar vacío. Si el interior tabla
está vacía, el sistema ignora toda condición WHERE y lee el mesa completa (o el cliente
actual completa).

72
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

73
Buffer de los datos
Resumen
El objetivo de la utilización del buffering es para almacenar temporalmente los datos para su
reutilización con el fin de…

• Tener un acceso más rápido a los datos


• Disminuir la carga en base de datos

…mediante la reducción de las consultas que se repiten.

• Si se trata de datos simples, calculados o extracciones


• Volumen de datos
• Si los datos se requieren solo por uno o varios usuarios.

74
Buffer de los datos
Overview con todos los tipos de buffer

User-specific buffering

Cross-user buffering

75
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Preparación de código de cara a la migración de SAP HANA
9. Optimización de código para SAP HANA

76
Procesamiento de Tablas Internas
Visión general Tablas Internas
Las tablas internas están completamente
especificado por cuatro propiedades:
1. Tipos de Tablas. El tipo de acceso para el tipo
de tabla determina el acceso ABAP a las filas
individuales de la tabla.
2. Tipos de Columnas. El tipo de fila de una
tabla interna puede ser cualquier tipo de datos
ABAP.
3. “Uniqueness” de clave. La clave puede
especificarse como único o no único. En caso
de claves únicas, hay varias entradas (con
respecto a la clave) en las tablas internas. La
singularidad se basa en el tipo de tabla. Las
tablas estándar sólo permiten claves no únicas
y las tablas hash sólo permite las claves
únicas.
4. Los componentes clave (teniendo en cuenta
la secuencia). Los componentes clave y su
secuencia especificar los criterios basados ​en
la cual el filas de la tabla se identifican.

77
Procesamiento de Tablas Internas
Organización Memoria Principal
En la memoria principal, las tablas internas, al igual que las tablas de bases de datos
están organizados en bloques o páginas.
Cuando una tabla interna se declara en un programa ABAP, el sistema sólo crea
una referencia (referencia de tabla) inicialmente en la memoria principal. Sólo cuando las
entradas se escriben en la tabla interna es el sistema que crea un encabezado de tabla y
un cuerpo de la tabla.
El encabezado de la
tabla incluye la
información más
importante acerca de
una tabla interna.

78
Procesamiento de Tablas Internas
Organización Memoria Principal

El encabezado de la tabla incluye la información más importante acerca de una


tabla interna.

DESCRIBE TABLE <itab> LINES <lines> : se puede consultar el número de filas


rápidamente.

INITIAL SIZE: se debe especificar siempre si requiere sólo unas pocas filas y las
tabla interna existe con frecuencia. Para las tablas anidadas, si una tabla interna es
parte de un fila de otra tabla interna.

¿cómo se puede liberar espacio asignado en las tablas internas de nuevo?


Mediante el comando DELETE itab no da como resultado ninguna liberación de
memoria. Las líneas en cuestión son sólo "seleccionado" como eliminados y
borrados. Sólo cuando se utiliza los comandos REFRESH o CLEAR se libera
memoria. Estos dos se van usar cuando la tabla interna se va a reutilizar en caso
contrario directamente se usa FREE itab.

79
Procesamiento de Tablas Internas
Tipos de Tablas
Las tablas internas se pueden subdividir en tablas de índices y tablas hash.

El tipo de tabla especifica


cómo se puede acceder a
las filas individuales de la
tabla a través de ABAP.

80
Procesamiento de Tablas Internas
Tipos de Tablas – Tablas de Índices
Los índices para tablas de índices sólo se crean cuando la secuencia física
ya no corresponde a la secuencia lógica, es decir, cuando uno de los
comandos INSERT, DELETE o SORT se ejecuta sobre la tabla y se aplican
las siguientes condiciones:

Un índice está disponible en dos tipos:

1. Como un índice lineal


2. Como un índice de árbol

81
Procesamiento de Tablas Internas
Tipos de Tablas – Tablas de Índices

Diagrama esquemático de un índice Diagrama esquemático de un índice de


lineal árbol

82
Procesamiento de Tablas Internas
Tipos de Tablas – Tablas Hash

La administración hash se basa en la


clave única de la tabla. El
administración de hash se crea para
las tablas hash solamente. Se
establece mediante la clave única de
la tabla interna. Accesos índice (por
ejemplo, la segunda entrada de la
tabla interna) no son posibles, las
tablas hash sólo se puede acceder
con la clave.

Para la tabla hash, cada valor de


clave está asignado a un número
único con una función hash. Para este
número, la dirección de memoria del
registro de datos correspondiente se Si se ejecuta un DELETE o SORT en una tabla hash,
almacena en una matriz debe crear una lista doublelinked (puntero anterior y
correspondiente hash. siguiente), los accesos tanto secuenciales (LOOP) o
ordenación (SORT). Necesita un 50% más de espacio
para administrar hash.

83
Procesamiento de Tablas Internas
Tipos de Tablas – Resumen
Recomendaciones para cuando usar uno u otro tipo de tablas.

Las tablas estándar sólo debe utilizarse si todas las entradas deben ser
procesados ​secuencialmente después del llenado o si las tablas internas se debe tener acceso
flexible y eficaz utilizando varias claves diferentes.

Tablas ordenadas (sort) son particularmente adecuados para procesamiento parcialmente


secuencial, por ejemplo, cuando una pequeña parte de un cuadro se procesan a través de
accesos por clave para los cuales se administró sólo la parte inicial de la clave.

Las tablas hash son óptimas si se accede sólo a través de la clave de la tabla. Si la clave tiene
un significado izquierdo alto, también puede utilizar una tabla única ordenados porque en este
caso surgen ventajas de rendimiento para la búsqueda binaria cuando tiene acceso a filas
individuales. 84
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Rellenar
Al igual que para los accesos de bases de datos, las operaciones de la matriz y las
operaciones individuales de registro también están disponibles para la tabla interna.

Operaciones Array
Los correspondientes estados ABAP son:

Para las tablas de hash, sólo se puede utilizar la instrucción INSERT, y para las tablas de
índice se puede utilizar tanto APPEND y INSERT. Si anexa filas utilizando APPEND, para
tablas ordenadas debe asegurarse de que la secuencia de clasificación de las tablas internas
se mantenga.
Asignaciones utilizando MOVE y = también pertenecen a las operaciones de matriz a las
tablas internas.

Operaciones con un solo registro


Se puede utilizar un APPEND y una
sentencia INSERT con la adición único
índice en las tablas índice, la tercera
variante está disponible para todas las tablas.

85
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Rellenar
Costos de Operaciones registro único para llenar las tablas internas

86
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Leer (Multiple Rows (LOOP) )

87
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Leer (Single Rows)

88
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Modificar

89
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Eliminar

90
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Condensar
El uso del comando COLLECT, puede crear conjuntos de datos resumidos en las tablas
internas. Los costos del comando son significativamente determinada por el esfuerzo de
buscar la fila correspondiente.

Si la administración de hash es destruido, el esfuerzo para buscar entradas depende


linealmente del número de entradas de la tabla interna. Se puede utilizar el módulo de función
ABL_TABLE_HASH_STATE para comprobar si una tabla estándar tiene un hash de
administración intacto.

Para las tablas ordenadas (sort), la entrada se especifica internamente mediante una
búsqueda binaria, mientras que el esfuerzo para buscar entradas depende logarítmicamente
en el número de entradas en la tabla interna

COLLECT deben utilizarse principalmente para las tablas hash debido a que tienen una clave
de tabla única y una administración Hash estable.

91
Procesamiento de Tablas Internas
Aspectos de Rendimiento – Ordenar
Las tablas estándar y hash, se pueden ordenar por cualquier campo de la tabla
con el comando SORT. Para las tablas ordenadas (sort) no se puede usar el
comando SORT, este tipo de tablas ya están ordenadas internamente mediante
los campo claves.

92
índice
1. Introducción ABAP Tuning.
2. Arquitectura del Sistema SAP para desarrolladores ABAP.
3. Performance Analysis Tools
4. Procesos en Paralelo.
5. Proceso de datos con SQL.
6. Búfer de los datos.
7. Procesamiento de Tablas Internas.
8. Optimización de código para SAP HANA

93
Optimización de código para SAP HANA
Correcciones funcionales al código existente ABAP
Por norma general el código ABAP funciona correctamente en SAP HANA como
hasta ahora. Solamente deberemos analizar al detalle el código específico de BD.

Solución recomendada
Usar Open SQL siempre que sea posible, adaptando las sentencias de SQL
nativo y hints de BD si son necesarios.

94
Optimización de código para SAP HANA
Correcciones funcionales al código existente ABAP
Para todo tipo de errores podremos encontrar una solución utilizando el Code Inspector:

95
Optimización de código para SAP HANA
Nueva herramienta: ABAP Test Cockpit

ABAP Test Cockpit es un nuevo framework para chequear las mejoras de


usabilidad, rendimiento, seguridad, bugs…

Está basado en Code Inspector pero añade nuevas herramientas y una mejor
usabilidad.

http://scn.sap.com/docs/DOC-31773

96
everis.com

Potrebbero piacerti anche