Como ya sabemos, una de las claves del buen rendimiento de SAP HANA es tener los datos en memoria. Este proceso consiste en llevar las columnas de las tablas con almacenamiento columnar a la memoria, a la zona denominada SAP HANA Column Store Memory. Las tablas con almacenamiento basado en filas, son cargadas al iniciarse el sistema y permanecen en esta zona sin variación.
Cuando las columnas se cargan en memoria, usualmente no se generan problemas, estos se pueden producir al descargarse. Las columnas se cargan en memoria en las siguientes situaciones:
- Explícitamente accedidas. Cuando una columna es consultada, y si esta no se encuentra en memoria, esta es cargada. Exceptuando las columnas de tipo Hybrid LOB. El tiempo dedicado a las tareas de carga de datos a memoria pueden ser consultados (M_SQL_PLAN_CACHE).
- Explícitamente cargadas. Vía la sentencia LOAD es posible cargar todas las columnas de todas las tablas o algunas columnas de ciertas tablas, entre otras especificaciones.
- Recargadas después del arranque (tablas explícitamente configuradas). A través de la sentencia ALTER TABLE <tabla> PRELOAD puede ser utilizada para definir las tablas que deben ser cargadas directamente después del arranque del sistema.
- Recargadas después del arranque (basado en columnas previamente cargadas). A través de parametrización de ficheros del sistema (indeserver.ini) se puede establecer que se carguen al iniciar el sistema, las columnas que estaban cargadas antes de la parada previa del sistema.
Las descarga de una columna se puede producir por los siguientes motivos (columna REASON de la vista M_CS_UNLOADS):
- Descarga por poca memoria disponible (LOW MEMORY). SAP HANA automáticamente realiza descargas cuando la memoria escasea, esto puede ser muy crítico para el rendimiento del sistema. Esta situación se debe evitar, entre otras cosas, es posible parametrizar el tamaño máximo de los objetos que se deben mantener en memoria (indexserver.ini).
- Explícitamente descargada. A través de la sentencia UNLOAD es posible descargar las tablas que se deseen.
- Descarga de recurso no utilizado (UNUSED RESOURCE). Puede establecerse que automáticamente se descargan las columnas cuando exceden un período sin uso (global.ini).
Referencia: SAP Note 2127458