Optimización del rendimiento de SAP HANA
Optimizar el rendimiento de SAP HANA es una tarea critica para cualquier administrador BASIS. Esta guia cubre las herramientas, transacciones y queries SQL que necesitas para monitorizar y mejorar el rendimiento de tu sistema HANA.
Transacciones para monitorizar SAP HANA
| Transaccion | Descripcion |
|---|---|
DBACOCKPIT | DBA Cockpit - panel principal de administracion HANA |
DB02 | Analisis de tablas y espacio en base de datos |
ST04 | Monitor de rendimiento de base de datos |
ST06 | Monitor del sistema operativo |
ST03N | Estadisticas de carga de trabajo |
SM50 | Procesos de trabajo activos |
SM66 | Procesos globales en todos los servidores |
ST22 | Dumps ABAP |
SM21 | Log del sistema |
Vistas de monitorizacion M_*
SAP HANA proporciona vistas de sistema (M_*) para monitorizacion en tiempo real:
| Vista | Informacion |
|---|---|
M_SERVICE_MEMORY | Uso de memoria por servicio |
M_HOST_RESOURCE_UTILIZATION | CPU, memoria y disco del host |
M_CONNECTIONS | Conexiones activas |
M_EXPENSIVE_STATEMENTS | Queries costosas |
M_SQL_PLAN_CACHE | Cache de planes de ejecucion |
M_BLOCKED_TRANSACTIONS | Transacciones bloqueadas |
M_LOCK_WAITS_STATISTICS | Estadisticas de espera por locks |
M_CS_TABLES | Tablas column store |
M_RS_TABLES | Tablas row store |
Queries SQL para monitorizacion
Ver uso de memoria
SELECT
HOST,
ROUND(USED_PHYSICAL_MEMORY/1024/1024/1024, 2) AS USED_GB,
ROUND(FREE_PHYSICAL_MEMORY/1024/1024/1024, 2) AS FREE_GB,
ROUND(USED_PHYSICAL_MEMORY * 100.0 / (USED_PHYSICAL_MEMORY + FREE_PHYSICAL_MEMORY), 1) AS USED_PCT
FROM M_HOST_RESOURCE_UTILIZATION;Top 10 tablas por tamano
SELECT TOP 10
SCHEMA_NAME,
TABLE_NAME,
ROUND(TABLE_SIZE/1024/1024, 2) AS SIZE_MB,
RECORD_COUNT
FROM M_CS_TABLES
ORDER BY TABLE_SIZE DESC;Queries mas lentas
SELECT TOP 20
STATEMENT_HASH,
EXECUTION_COUNT,
ROUND(TOTAL_EXECUTION_TIME/1000000, 2) AS TOTAL_SEC,
ROUND(AVG_EXECUTION_TIME/1000, 2) AS AVG_MS,
SUBSTR(STATEMENT_STRING, 1, 100) AS QUERY
FROM M_SQL_PLAN_CACHE
WHERE EXECUTION_COUNT > 0
ORDER BY TOTAL_EXECUTION_TIME DESC;Conexiones activas
SELECT
USER_NAME,
APPLICATION_NAME,
CLIENT_HOST,
CONNECTION_STATUS,
CREATED_BY
FROM M_CONNECTIONS
WHERE CONNECTION_STATUS = 'RUNNING'
ORDER BY START_TIME;Optimizacion de memoria
SAP HANA es una base de datos in-memory. La gestion de memoria es critica:
| Parametro | Descripcion | Recomendacion |
|---|---|---|
global_allocation_limit | Limite maximo de memoria | 90% de RAM fisica |
statement_memory_limit | Limite por consulta | Evita que una query consuma toda la RAM |
enable_unload | Descarga de columnas | Activar para tablas poco usadas |
Limpiar cache de planes SQL
-- Limpiar cache completa (usar con precaucion)
ALTER SYSTEM CLEAR SQL PLAN CACHE;
-- Limpiar solo planes no usados recientemente
ALTER SYSTEM CLEAR SQL PLAN CACHE SELECTIVE;Optimizacion de tablas
Column Store vs Row Store
| Tipo | Ventajas | Uso recomendado |
|---|---|---|
| Column Store | Compresion, agregaciones rapidas | Tablas grandes, reporting, analytics |
| Row Store | OLTP, escrituras frecuentes | Tablas pequenas, alta transaccionalidad |
Delta merge
Las tablas column store usan delta storage para inserciones. El delta merge consolida estos datos:
-- Ver tablas con delta grande (candidatas a merge)
SELECT
SCHEMA_NAME,
TABLE_NAME,
RAW_RECORD_COUNT_IN_DELTA,
RAW_RECORD_COUNT_IN_MAIN
FROM M_CS_TABLES
WHERE RAW_RECORD_COUNT_IN_DELTA > 1000000
ORDER BY RAW_RECORD_COUNT_IN_DELTA DESC;
-- Forzar delta merge en una tabla
MERGE DELTA OF "SCHEMA"."TABLE";Optimizacion de consultas
- Usar EXPLAIN PLAN: Analiza el plan de ejecucion antes de ejecutar
- Evitar SELECT *: Selecciona solo columnas necesarias
- Usar indices: Crea indices en columnas de filtro frecuente
- FETCH FIRST: Limita resultados cuando sea posible
- Evitar funciones en WHERE: Impiden uso de indices
-- Analizar plan de ejecucion
EXPLAIN PLAN FOR
SELECT * FROM SCHEMA.TABLE WHERE FIELD = 'VALUE';
-- Ver el plan generado
SELECT * FROM EXPLAIN_PLAN_TABLE;Alertas y umbrales
| Metrica | Warning | Critico |
|---|---|---|
| Uso de memoria | >80% | >90% |
| Uso de CPU | >70% | >85% |
| Espacio en disco | >75% | >90% |
| Conexiones activas | >500 | >800 |
| Delta store size | >10M registros | >50M registros |
Herramientas de administracion
- SAP HANA Studio: IDE completo para administracion y desarrollo
- SAP HANA Cockpit: Interfaz web para monitorizacion
- hdbsql: Cliente de linea de comandos
- DBA Cockpit (DBACOCKPIT): Desde SAP GUI
Preguntas frecuentes
Como ver el uso de memoria en SAP HANA?
Usa la vista M_HOST_RESOURCE_UTILIZATION para ver memoria fisica usada y libre. Desde SAP GUI puedes usar la transaccion DBACOCKPIT o ST04. El uso de memoria no deberia superar el 90% del limite configurado en global_allocation_limit.
Que es el delta merge en SAP HANA?
El delta merge es el proceso que consolida datos del delta storage (donde van las inserciones nuevas) con el main storage de las tablas column store. HANA lo ejecuta automaticamente pero puedes forzarlo manualmente con MERGE DELTA OF si detectas deltas muy grandes.
Como identifico queries lentas en HANA?
Consulta la vista M_EXPENSIVE_STATEMENTS para ver las queries mas costosas en tiempo real, o M_SQL_PLAN_CACHE para estadisticas historicas. Ordena por TOTAL_EXECUTION_TIME para encontrar las queries que mas recursos consumen.
Cual es la diferencia entre Column Store y Row Store?
Column Store almacena datos por columnas, ideal para analytics y agregaciones sobre tablas grandes. Row Store almacena por filas, mejor para OLTP con muchas escrituras. En SAP HANA la mayoria de tablas usan Column Store por defecto.
Que transaccion uso para monitorizar HANA desde SAP GUI?
DBACOCKPIT es la transaccion principal para administracion de SAP HANA desde SAP GUI. Proporciona acceso a monitores de rendimiento, espacio, backups, alertas y configuracion. ST04 y DB02 tambien son utiles para analisis especificos.
Contenido relacionado
- Como ejecutar SQL en SAP HANA
- Guia completa de SAP HANA
- SAP BASIS - Administracion
