Verdades a medias sobre SAP HANA (y Parte III)

Continuamos con la última entrega de esta serie (Parte I, Parte II) sobre las verdades a medias o conceptos erróneos que circulan sobre SAP HANA (más información en el documento de referencia):


Continuamos con la última entrega de esta serie (Parte I, Parte II) sobre las verdades a medias o conceptos erróneos que circulan sobre SAP HANA (más información en el documento de referencia):

  • En escenarios de escalabilidad horizontal (scale-out) las tablas con almacenamiento columnar no se almacenan en el nodo principal (master node). Es usual que varias tablas con almacenamiento en columnas se encuentren en el nodo principal en un escenario de escalabilidad horizontal. Pero es importante que las tablas de gran tamaño y/o críticas sean movidas a los nodos auxiliares o esclavos (slave nodes). Por ejemplo, en un entorno BW, infocubos, DSOs y PSAs deberían ser movidos a nodos esclavos.
  • En un escenario de escalabilidad horizontal el almacenamiento en filas es sólo en el nodo principal. Esta afirmación es correcta desde una perspectiva de aplicaciones, pero sin embargo, los nodos esclavos tendrán una mínima implementación técnica de tablas con almacenamiento en filas.
  • La sentencia UPDATE es siempre aplicable a operaciones DML (Data Manipulation Language). Esta afirmación no es siempre cierta. SAP HANA utiliza sentencias UPDATE también en operaciones DDL (Data Definition Language). Por ejemplo, la sentencia UPDATE para optimizar la compresión del almacenamiento columnar.
  • El motor Join (Join Engine) sólo procesa sentencias join. Esta afirmación es incorrecta. El motor join (ver aquí entrada sobre los motores SAP HANA) también es utilizado por ciertas consultas sobre una única tabla que realiza agregaciones o se utiliza la cláusula GROUP BY.

Referencia: SAP Note 2100010

Verdades a medias sobre SAP HANA (Parte II)

Continuamos con la entrada anterior, sobre las verdades a medias o conceptos erróneos que circulan sobre SAP HANA:


Continuamos con la entrada anterior, sobre las verdades a medias o conceptos erróneos que circulan sobre SAP HANA:

  • SAP HANA es una base de datos en memoria pura. SAP HANA es una base de datos en memoria, sin embargo, hay una serie de operaciones de lectura y escritura en disco que tienen impacto en el rendimiento global del sistema, tales como:
    • Carga de tablas con almacenamiento en filas al iniciar el sistema
    • Carga de columnas
    • Acceso LOB (Large Objects)
    • Ejecución de savepoints y snapshots
    • Volcados a base de datos (commits)
    • Copias de seguridad (backups)
  • Todas las tablas están permanentemente en memoria. No todas las tablas SAP HANA están permanentemente y completamente en memoria. Se debe tener presente lo siguiente:

    • Las tablas con almacenamiento en filas y las columnas LOB no son cargadas en memoria.
    • Las tablas con almacenamiento columnar no son cargas sino son utilizadas o son descargadas por problemas de memoria.
    • Así mismo, la información histórica que muy rara vez se accede, no debería ser cargada en memoria
  • Las funcionalidades de almacenamiento en filas y almacenamiento en columnas están apartadas. Tradicionalmente estas dos técnicas o funcionalidades provienen de tipos distintos de bases de datos, pero en SAP HANA han sido integradas, por lo que ambos tipos de almacenamiento pueden ser combinados para procesar la información.

Verdades a medias sobre SAP HANA (Parte I)

Cuando algo nuevo surge en el mundo de tecnología el desconocimiento se hace presente en forma de mitos, verdades a medias o conceptos erróneos. En el ámbito de SAP HANA esta situación ya se está produciendo, por ello SAP ofrece una breve aclaración de los conceptos que se están tergiversando.

A continuación señalamos los siguientes conceptos o afirmaciones erróneas:


Cuando algo nuevo surge en el mundo de tecnología el desconocimiento se hace presente en forma de mitos, verdades a medias o conceptos erróneos. En el ámbito de SAP HANA esta situación ya se está produciendo, por ello SAP ofrece una breve aclaración de los conceptos que se están tergiversando.

A continuación señalamos los siguientes conceptos o afirmaciones erróneas:

  • Todas las tablas de datos de SAP HANA se procesan con almacenamiento columnar (column-oriented). SAP HANA permite, tanto, tablas con almacenamiento en filas como en columnas. Las tablas con almacenamiento en filas son accedidas del mismo modo que las bases de datos relacionales tradicionales. Basándose en la experiencia y en el conocimiento, se puede decidir, de manera individualizada, que tipo de almacenamiento debe tener cada tabla para obtener el mejor rendimiento.
  • El almacenamiento en columnas ofrece mejor rendimiento que el almacenamiento en filas. En algunos casos es así, por ello, SAP tiende al mayor uso posible de tablas con almacenamiento en columnas, pero sin embargo, hay algunos casos en que el almacenamiento basado en filas ofrece un mayor rendimiento. (aquí tips a tener en cuenta).
  • Los índices no son necesarios. SAP HANA puede analizar grandes cantidades de datos, incluso sin la existencia de índices. Sin embargo hay situaciones en las que los índices son útiles, por ejemplo si se requiere realizar un acceso selectivo en repetidas ocasiones (para un entorno Business Suite on HANA, sugerimos la nota 1794297).
  • Los índices no se conservan en el disco. Los índices conformados por más de una columna de las tablas con almacenamiento columnar, son generalmente almacenados en disco. Los índices conformados por sólo una columna, son considerados como parte de la definición o estructura de la columna, no son almacenados en disco, se recrean automáticamente cuando la columna es cargada. Los índices de las tablas con almacenamiento en filas no se almacenan en disco, se crean cada vez que el sistema se pone en marcha.

Los Savepoints de SAP HANA


La principal técnica que utiliza SAP HANA Database para ofrecer un inmediato acceso a la información es manteniendo los datos en memoria, si la información fuese actualizada, estos cambios se reflejarían tanto en la memoria como en disco, es en este punto que interviene el concepto de Savepoints (aquí más información).

Los datos que se cargan a memoria son agrupados en “páginas”, todas las páginas que fuesen modificadas en un período de tiempo determinado, son volcadas a disco en los denominados Savepoints (el cual podríamos traducir como “puntos de sincronización” o “puntos de salvaguarda”).

Es una instalación del tipo “scale-out” conformada por más de un host, se debe tener en cuenta que cada host gestionará sus propios Savepoints.

La disponibilidad de un savepoint reciente conllevará a un reinicio del sistema más rápido porque habrá menos logs que procesar. Un Savepoin es desencadenado por las siguientes vías:

  • Intervalo predefinido. La parametrización por defecto establece que automáticamente habrá un punto de salvaguarda cada 5 minutos (global.ini >> [persistence] >> savepoint_interval_s = 300).
  • Comando del sistema. Puede utilizarse una sentencia en SAP HANA Studio para ejecutar un savepoint manualmente (ALTER SYSTEM SAVEPOINT)
  • Cierre del sistema del tipo Soft. Un “soft shutdown” ejecuta un savepoint antes de detener los servicios. Un “hard shutdown” no realiza un savepoint, lo que incrementaría el tiempo de reinicio del sistema.
  • Después de iniciar el sistema. Finalizado el reinicio del sistema, se realiza un savepoint.
  • Snapshots. Las instantáneas conllevan un savepoint que no se ven afectados por siguientes savepoints.

Cancelar o interrumpir sesiones en SAP HANA

Un alto consumo de recursos que pudiese realizar un proceso podría afectar la estabilidad y el buen funcionamiento de cualquier infraestructura, en este aspecto, SAP HANA no es la excepción. En SAP HANA es posible definir límites globales de consumos del área de memoria, que utilizan los procesos para su ejecución (denominada Allocated memory). Hasta la actualización SPS 06, el valor predeterminado era el 90% de la memoria física, desde la actualización SPS 07 el valor por defecto es el 90% de los primeros 64 GB y el 97% del resto de la memoria física.


Un alto consumo de recursos que pudiese realizar un proceso podría afectar la estabilidad y el buen funcionamiento de cualquier infraestructura, en este aspecto, SAP HANA no es la excepción. En SAP HANA es posible definir límites globales de consumos del área de memoria, que utilizan los procesos para su ejecución (denominada Allocated memory). Hasta la actualización SPS 06, el valor predeterminado era el 90% de la memoria física, desde la actualización SPS 07 el valor por defecto es el 90% de los primeros 64 GB y el 97% del resto de la memoria física.

En el caso que se detectará un proceso/sesión con un elevado uso de recursos, este podría ser interrumpido. Una sesión en este contexto es la combinación de la conexión (es decir, enlace al proceso cliente), el hilo (thread, es decir, la ejecución real en el lado SAP HANA), Sentencia SQL y transacción.

La interrupción de la ejecución de una sesión puede afectar el funcionamiento de una aplicación, por lo que esta medida debe ser utilizada con mucho cuidado. Existen las siguientes opciones para terminar sesiones críticas en SAP HANA:

  • Cancelar sesiones. Vía SAP HANA Studio (Administration >> Performance >> Sessions) o vía sentencia SQL (ALTER SYSTEM CANCEL SESSION). La cancelación no es inmediata, el sistema puede realizar comprobaciones previas.
  • Desconectar sesiones. Vía sentencia SQL (ALTER SYSTEM DISCONNECT SESSION) es posible desconectar sesiones (e implícitamente cancelarla). Se debe tener presente que si una sesión no puede ser cancelada con el comando anterior, el uso de una desconexión empeoraría la situación, dado que podría iniciar nuevamente el funcionamiento del proceso que se desea desconectar.
  • Establecer límites de uso de memoria. A partir de la actualización SPS 08 es posible establecer la inmediata culminación de sentencias SQL que superasen ciertos límites de uso de memoria. Así mismo, es posible definir el consumo global de memoria por parte de los procesos.

Referencia: SAP Note 2092196