Press "Enter" to skip to content

SAP HANA: USO DE MEMORIA parte 2

snatic_k8ot5v 0

Con lo anterior descrito en la parte 1 es importante saber la cantidad de memoria que se requiere para levantar un proceso HANA a las necesidades de una empresa, determinar este tamaño se basa en cuantas tablas se tendrán en HANA, la compresión a estas tablas y el uso de operación con estas tablas para procesos temporales.

Uno de los procesos que más consume memoria es el servidor de índices (indexserver), existe un procedimiento de SAP que explica a detalle la optimización de este llamado optimize_compresion.

Ahora utilicemos algunos comandos SQL para obtener algunas respuestas del uso de memoria por ejemplo la del uso total de nuestro sistema:

select HOST, round(INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as
«Used Memory GB»

from M_HOST_RESOURCE_UTILIZATION

Ahora específicamente del indexserver:

select HOST, round(TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as
«Used Memory GB»

from M_SERVICE_MEMORY where SERVICE_NAME = ‘indexserver’

Utilizando el mismo comando podríamos obtener cualquier otro servicio como por ejemplo el uso del componente XS.

Muchos de estos datos históricos se obtienen de tablas con el sufijo HOST* como por ejemplo HOST_RESOURCE_UTILIZATION_STATISTICS, con esta es posible ver el pico más alto de uso de memoria del sistema desde el último reinicio:

select top 1 HOST, SERVER_TIMESTAMP, round(INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as

«Peak Used GB»
from _SYS_STATISTICS.HOST_RESOURCE_UTILIZATION_STATISTICS order
by
«Peak Used GB»
desc

Con estas sentencias es posible jugar con los diferentes campos y analizar un periodo con un horario específico:

select top 30 HOST, SERVER_TIMESTAMP, round(INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as

«Used Memory GB»
from _SYS_STATISTICS.HOST_RESOURCE_UTILIZATION_STATISTICS

where
hour(SERVER_TIMESTAMP) = 7 and
minute(SERVER_TIMESTAMP) = 0 order
by SERVER_TIMESTAMP desc

Una regla importante a conocer es que HANA utiliza la memoria basada en sus tablas del tipo row store o column store, por lo que suena evidente medir este tipo de tablas para conocer cualquier necesidad de ajuste para ellos los siguientes scripts de SQL:

select
round(sum(MEMORY_SIZE_IN_TOTAL)/1024/1024) as
«Column Tables MB Used»
from M_CS_TABLES

Detalles por esquema:

select SCHEMA_NAME as
«Schema», round(sum(MEMORY_SIZE_IN_TOTAL) /1024/1024) as
«MB Used»
from

M_CS_TABLES GROUP
by SCHEMA_NAME order
by
«MB Used»
desc