poniedziałek, 4 sierpnia 2025

EA SAP HANA: Zarządzanie pamięcią i wydajnością

 SAP HANA, jako platforma in-memory, oferuje wyjątkową wydajność i elastyczność w przetwarzaniu danych. Jednak by w pełni wykorzystać jej potencjał, niezbędne jest aktywne monitorowanie i zarządzanie zużyciem pamięci, CPU oraz optymalizacja zapytań SQL. W tym artykule omawiamy najważniejsze aspekty związane z zarządzaniem wydajnością i pamięcią w SAP HANA oraz przedstawiamy sprawdzone narzędzia i dobre praktyki.



Architektura pamięci SAP HANA

Główne typy pamięci:

  • Virtual Memory – suma wszystkich zarezerwowanych przestrzeni przez procesy HANA

  • Resident Memory – pamięć realnie załadowana do RAM

  • Used Memory – całkowita pamięć aktualnie w użyciu przez HANA

  • Code + Stack Memory – kod binarny + kontekst wątków systemowych

  • Table Memory – dane z kolumnowych i wierszowych tabel w RAM

  • Working Memory – pamięć dla przetwarzania zapytań i operacji tymczasowych

🔍 Monitoruj M_MEMORY dla szczegółowej analizy struktury pamięci.

Zarządzanie pamięcią – komponenty i limity

Parametry konfiguracyjne:

  • global_allocation_limit – maksymalna ilość pamięci RAM dla całego systemu HANA

  • allocation_limit – limit dla konkretnego serwisu (np. indexserver)

  • statement_memory_limit – ograniczenie zużycia pamięci przez jedno zapytanie SQL

sql
SELECT * FROM M_HOST_RESOURCE_UTILIZATION; SELECT * FROM M_SERVICE_MEMORY WHERE MEMORY_USAGE > 10000000000;

Rekomendacje:

  • Ustaw global_allocation_limit na poziomie licencji (np. 384 GB → 393216 MB)

  • Monitoruj M_SERVICE_MEMORY – szukaj serwisów zużywających ponadprzeciętną ilość RAM

  • W systemach produkcyjnych ustaw statement_memory_limit dla ochrony przed zapytaniami „zjadającymi” zasoby

Monitorowanie wykorzystania CPU

SAP HANA może intensywnie wykorzystywać CPU, szczególnie przy złożonych zapytaniach.

Narzędzia:

  • Performance Monitor (HANA Cockpit / Studio)

  • Widok M_SERVICE_STATISTICS i M_THREADS

  • Kafelki w HANA Cockpit: CPU Usage, Load History

Wskaźniki:

  • Użycie CPU > 85% przez dłuższy czas może wskazywać na problemy

  • Długo działające wątki – identyfikuj w M_ACTIVE_STATEMENTS

Diagnostyka:

sql
SELECT * FROM M_THREADS WHERE THREAD_STATE = 'Running' AND TOTAL_CPU_TIME > 100000000;

Analiza drogich zapytań (Expensive Statements)

Czym są „expensive statements”?

To zapytania SQL, które zużywają dużo zasobów – czasu CPU, I/O, pamięci.

Widoki diagnostyczne:

  • M_EXPENSIVE_STATEMENTS

  • M_SQL_PLAN_CACHE

  • M_SQL_EXECUTION_PLAN

sql
SELECT * FROM M_EXPENSIVE_STATEMENTS WHERE START_TIME > ADD_SECONDS(CURRENT_TIMESTAMP, -600);

Narzędzia:

  • SQL Analyzer – analiza planów zapytań

  • Plan Visualizer (PlanViz) – graficzna analiza wykonania zapytania

💡 Włącz śledzenie drogich zapytań, ustawiając progowy czas wykonania (np. 1s)

Optymalizacja wydajności – dobre praktyki

Rekomendacje:

  • Unikaj SELECT * – pobieraj tylko niezbędne kolumny

  • Używaj LIMIT i paginacji dla dużych wyników

  • Zmieniaj strukturę zapytań – np. zamiana IN na JOIN

  • Monitoruj widoki – zapytania na widokach obliczeniowych mogą być kosztowne

Narzędzia automatyczne:

  • SAP HANA Mini Checks – zestaw gotowych zapytań diagnostycznych (SAP Note 1969700)

  • Alerting Framework – wbudowany system alertów z poziomami (Info, Low, Medium, High)

Zarządzanie procesem Delta Merge

W przypadku tabel kolumnowych dane zapisywane są najpierw do delta store, a później łączone z głównym segmentem podczas delta merge.

Kiedy następuje merge?

  • Automatycznie po przekroczeniu progu

  • Ręcznie (np. po dużym INSERT)

Śledzenie:

sql
SELECT * FROM M_DELTA_MERGE_STATISTICS ORDER BY LAST_MERGE_TIME DESC;

Typy merge:

  • Auto

  • Smart (bazujący na heurystykach)

  • Hard (ręczny, wymuszony)

  • Critical (przekroczony limit)

💡 Regularne merge zmniejszają zużycie pamięci i poprawiają wydajność zapytań SELECT.

Zarządzanie wydajnością w HANA Cockpit

W HANA Cockpit znajdziesz dedykowane sekcje:

  • Memory Overview – statystyki alokacji

  • CPU Usage – wykresy i historia obciążenia

  • Expensive Statements Monitor – lista problematycznych zapytań

  • Alert Inbox – monitoring i konfiguracja alertów

Podsumowanie

Efektywne zarządzanie pamięcią i wydajnością to kluczowy element pracy administratora SAP HANA. Wysoka wydajność systemu to nie tylko wynik technologii in-memory, ale też konsekwentnego monitorowania i optymalizacji zasobów.

Monitoruj zużycie pamięci i CPU
Identyfikuj i optymalizuj kosztowne zapytania
Zarządzaj delta merge dla stabilności systemu
Korzystaj z Cockpita i Mini Checks do analizy systemowej

Brak komentarzy:

Prześlij komentarz