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