Premisas a tener en cuenta para obtener un buen performance en SAP, PARTE V (ANALISIS DESARROLLOS ABAP)





Desarrollos ABAP (programas zeta del cliente) que van orientados a sentencias SQL y que por lo general por estar mal construidos la mayoría de las veces castigan al sistema.

En este frente son muchas las razones por las que un sistema se ve afectado a nivel de rendimiento, a continuación, las posibles causas más frecuentes:
1.       La mayoría de los casos ocurre porque el programa zeta construido para satisfacer una necesidad no está leyendo los índices creados.
2.       En algunos casos los programas zeta no están construidos cumpliendo las buenas prácticas, por nombrar alguno de ellos, el select *, crear más de tres join en una sentencia, entre otros.
3.       Inconvenientes con el tamaño de los índices, estos tienen igual o mayor tamaño que la tabla. Solo se deben reconstruir a través de la se14, por lo general un índice no debe ocupar más del 10% del tamaño de la tabla, máximo un 20% exagerando.
4.       Problemas con los programas estándar. Para ello solo basta con revisar si existen mejoras que puedan ser aplicadas a través de notas OSS.
5.       La tabla que el programa zeta está leyendo no tiene índices creados.
6.       Otra causa es que el programa estándar a pesar de estar leyendo los índices aun toma mucho tiempo de ejecución, para ellos se debe consultar notas oss que la mayoría de las veces recomienda crear un índice adicional o en su defecto actualizar el programa estándar.
7.       También sucede que algunas sentencias ya son obsoletas y deben ser actualizadas.
8.       La tabla que el programa zeta o estándar no tiene las estadísticas actualizadas.
9.       Dentro del proceso de análisis, uno de los mensajes que se identifican y te ponen en alerta, es cuando en el programa zeta del cual se está realizando el análisis, no está utilizando los índices, se refleja con el texto conocido como “FULL TABLE SCAN”.

Ahora, con relación a los índices para una tabla, existen algunas reglas que debemos tener claras a saber:
a.       No crear 2 índices con los mismos campos.
b.       El índice se debe crear con campos selectivos que van ser utilizados por la consulta y/o programa zeta y que son parte de la tabla.
c.       Como regla de oro un índice no debe contener más de cuatro campos
d.       Otra regla de oro a la hora de crear índices es no crear más de 5 índices por tabla.
e.       No cambie un índice creado por SAP, a menos que este soportado en una nota OSS.
f.        Nunca cambie un índice de más de 10 MB de tamaño durante horas de operación, ya que cuando se modifica el índice, este se bloquea y por ende toda operación que sobre el índice se esté realizando y que genera como consecuencia un congelamiento en algunas transacciones relacionadas o tienen relación con la tabla.

No me queda más que mencionar que para esta gestión, existen algunas herramientas que te ayudaran a evaluar la ejecución de un programa zeta en el sentido de hacer un trace a las sentencias sql (sql statements), cuando se sospecha que esta ocasionado alguna demora y en el peor de los casos u ocasionándole estrés al sistema o degradando el rendimiento del mismo, con el fin de tomar las medidas y/o acciones correctivas.
No obstante, pueden en algún momento, aunque es un poco complejo y bastante dispendioso, realizar seguimiento a un programa estándar, a saber:

·         Transacción ST05 (SQL trace)
·         Transacción STAD (Statistics)
·         Transacción SAT (Abap runtme Analysis)
·         Transacción ST03 (Work load analysis)
·         SQLM /SDF/ZQLM abap SQL monitor

Aunque la ST05 y la SAT entregan información detallada del performance acerca de sql statements y son capaces de seguir solicitudes o requerimientos que pueden ser enlazados a procesos de negocio, no están diseñadas para monitorear un sistema por un periodo de tiempo largo.
De otro lado, la STAD y la ST03 aunque son capaces de monitorear sistemas completo, no son capaces de entregar información detallada del performance acerca de sql statements.
Es de anotar que en algunos momentos se requieren realizar un monitoreo temporal por un periodo de tiempo largo, con el fin de identificar lo que no se pudo detectar con la transacción previas. Para ello existe en la actualidad una transacción denominada ABAP SQL monitor que cubre esa necesidad, es decir que es capaz de monitorear un sistema por un periodo largo de tiempo, mientras también están entregando información detalla acerca del sql statement que los puede enlazar a los procesos de negocio. De esta manera se tiene una colección de datos más gruesa para detectar cualquier falla que pueda estar ocasionando inconvenientes de rendimiento.

Comentarios

Entradas populares de este blog

Verificación de la caducidad de un rol como de la duplicidad del mismo

Ventajas de activar el log de auditoria SM20 de una manera más eficiente

“Sequential read” tiene un contexto diferente a lectura secuencial en el ámbito de SAP SM50.