SAP HANA suele tener información en memoria basado en tablas de columna que son cargadas columna a columna solo cuando están en uso, por tanto este comportamiento puede tener cargas lentas, cuando no existe más memoria o se llega a un punto crítico HANA automáticamente borra cache e información no importante por tal motivo es importante saber por tabla si está cargada y para ello utilizar este simple comando SQL para garantizar que este cargada:
load «SAP_HANA_DEMO».«sap.hana.democontent.epm.data::EPM.PO.Item»
all
Para después con el comando SQL revisar por tabla el consumo de memoria:
select TABLE_NAME as
«Table», round(MEMORY_SIZE_IN_TOTAL/1024/1024) as
«MB Used»
from M_CS_TABLES where
SCHEMA_NAME = ‘SAP_HANA_DEMO’
order
by
«MB Used»
desc
O bien entrar a mayor detalle como por ejemplo su nivel de compresión, memoria Delta, Total utilizado, etc, todo esto de las vistas M_CS_TABLES, M_CS_COLUMNS:
select COLUMN_NAME as
«Column»,
LOADED,
round(UNCOMPRESSED_SIZE/1024/1024) as
«Uncompressed MB»,
round(MEMORY_SIZE_IN_MAIN/1024/1024) as
«Main MB»,
round(MEMORY_SIZE_IN_DELTA/1024/1024) as
«Delta MB»,
round(MEMORY_SIZE_IN_TOTAL/1024/1024) as
«Total Used MB»,
round(COMPRESSION_RATIO_IN_PERCENTAGE/100, 2) as
«Compr. Ratio»
from M_CS_COLUMNS where schema_name =‘SAP_HANA_DEMO’
AND table_name = ‘sap.hana.democontent.epm.data::EPM.PO.Item’
Esto ya que estas tablas de Sistema tienen información relevante a todos los esquemas:
Otro de los modelos utilizados en HANA es el row store y la forma en como se puede obtener la memoria utilizada por estas tablas es la siguiente:
select
round(sum(USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE)/1024/1024) as
«Row Tables MB Used»
from M_RS_TABLES
Ahora por un esquema específico en este ejemplo SYS:
select SCHEMA_NAME, TABLE_NAME, round((USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE)/1024/1024, 2) as
«MB Used»
from M_RS_TABLES where SCHEMA_NAME = ‘SYS’
order
by
«MB Used»
desc, TABLE_NAME
Existen otras mediciones de memoria para los procesos que realizan consultas a HANA llamadas expensive statements las cuales pueden ser monitoreadas y limitadas pero para eso es requerido configurar el archivo global.ini con los siguientes parámetros:
[Resource_traking]
enable_tracking = on
memory_tracking = on
[memorymanager]
Statement_memory_limit = <GB>
Ahora para el tema del pool de memoria utilizado por SAP HANA es posible usar el siguiente SQL para monitorearlo:
select HOST, round(ALLOCATION_LIMIT/1024/1024/1024, 2) as
«Allocation Limit GB»
from
PUBLIC.M_HOST_RESOURCE_UTILIZATION
Relación de la memoria en SAP HANA y Linux:
Sobre HANA Studio se puede revisar todo el uso de memoria:
Además entrar a detalle sobre la siguiente opción utilizando el cockpit de HANA: