Torna al blog
HANA

Ottimizzare la gestione della memoria in SAP HANA

5 maggio 2026
8 min di lettura

L'architettura in-memory di SAP HANA garantisce prestazioni senza precedenti, ma porta con sé sfide specifiche nella gestione della memoria. Un out of memory può fermare l'intero landscape S/4HANA. Questa guida ti propone strategie pratiche per ottimizzare l'uso della memoria di HANA e prevenire i crash per OOM.

Come è organizzata la memoria di HANA

La memoria di HANA è suddivisa in alcune aree principali, ognuna con uno scopo diverso:

Componenti della memoria di HANA:

Code & Stack
~1-2 GB - Dimensione fissa per i processi HANA
Row Store
Tabelle di sistema, tabelle temporanee, delta storage - In genere il 10-20% del totale
Column Store
Dati di business (main) - La componente più grande, il 60-80% del totale
Shared Memory
Result cache, cache dei cubi OLAP - 5-10%

Le cause più comuni dei problemi di memoria

1. Query SQL non ottimizzate

Tabelle di grandi dimensioni caricate per intero in memoria, senza clausole WHERE

Soluzione: usa l'HANA SQL Monitor (SQLM) per individuare le query più onerose. Aggiungi filtri e ottimizza le join.

2. Delta merge che non viene eseguito

Il delta storage cresce senza controllo e consuma troppa memoria

Soluzione: pianifica il delta merge automatico oppure eseguilo manualmente nelle fasce di basso carico.

3. Tabelle nel column store senza motivo

Tabelle che dovrebbero stare nel row store si trovano nel column store

Soluzione: rivedi il tipo di ogni tabella. Le tabelle piccole e aggiornate di frequente dovrebbero stare nel row store.

Monitorare la memoria di HANA

Transazioni e viste principali

-- SQL essenziale per il monitoraggio della memoria:
-- Utilizzo complessivo della memoria
SELECT * FROM M_HOST_RESOURCE_UTILIZATION;
-- Memoria per servizio
SELECT * FROM M_SERVICE_MEMORY;
-- Tabelle più grandi in memoria
SELECT * FROM M_TABLE_PERSISTENCE_STATISTICS
ORDER BY MEMORY_SIZE_IN_TOTAL DESC;

Strategie di ottimizzazione

Quick win per ridurre il consumo di memoria

1. Partizionamento delle tabelle grandi (20-30% di risparmio)

Partiziona per data le tabelle con più di 50M di righe. HANA carica solo le partizioni che servono.

2. Unload delle tabelle inutilizzate (10-15% di risparmio)

Usa lo statement UNLOAD per le tabelle di archivio a cui si accede di rado.

3. NSE (Native Storage Extension) (30-40% di risparmio)

Sposta i dati warm su NSE, che lavora su disco. Per le applicazioni è del tutto trasparente.

4. Ottimizzazione delle colonne LOB (5-10% di risparmio)

Memorizza BLOB/CLOB in tabelle separate per ridurre l'occupazione della main memory.

Livello avanzato: CDS view ottimizzate per la memoria

In S/4HANA le CDS view possono caricare, senza che tu te ne accorga, grandi volumi di dati. Le best practice:

  • Evita SELECT * nelle CDS view - Esponi solo i campi che servono
  • Usa i parametri per rendere obbligatorio un filtro (ad es. un intervallo di date)
  • Sfrutta le association al posto delle join, quando possibile
  • Monitora il consumo delle CDS con la transazione /SDF/CD_CDS

Emergenza: come gestire un out of memory

Se HANA sta esaurendo la memoria IN QUESTO MOMENTO:

  1. 1. Termina le query più onerose - Usa ALTER SYSTEM CANCEL SESSION
  2. 2. Fai l'unload delle tabelle più grandi - UNLOAD "SCHEMA"."LARGE_TABLE"
  3. 3. Svuota la result cache - ALTER SYSTEM CLEAR RESULT CACHE
  4. 4. Aumenta la memoria (temporaneamente) - Se il sistema è virtualizzato, aggiungi subito RAM
  5. 5. Riavvia i servizi - Ultima risorsa: riavvia l'indexserver per liberare la memoria persa nei leak

Impostare un monitoraggio proattivo

Soglie di alert consigliate:

Alert di warning
  • Utilizzo della memoria >70%
  • Delta merge in sospeso da >24 ore
  • Crescita della memoria >5% al giorno
Alert critici
  • Utilizzo della memoria >85%
  • Eventi OOM negli alert log
  • Una singola tabella >30% della memoria totale

Conclusione

L'ottimizzazione della memoria di HANA è un processo continuo, non un'attività da fare una volta sola. Monitoraggio costante, alert proattivi e revisioni periodiche delle dimensioni delle tabelle e dei pattern delle query sono indispensabili. Con una gestione corretta puoi mantenere prestazioni ottimali ed evitare costosi incidenti di out of memory.

Ottimizza la memoria di HANA

SUPtime legge a ogni polling la memoria usata da ciascun servizio HANA, accanto a backup, dischi e query lente: vedi dove sta andando prima di un out of memory.

Inizia il monitoraggio