¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

¿Cómo evitar errores de memoria en SAP HANA al ejecutar declaraciones de unión completa en tablas grandes?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 47 Vistas
0
Cargando...

Estimados expertos,

Estoy experimentando un error que probablemente sea causado por el sistema HANA quedándose sin memoria.

No se pudo ejecutar 'crear tabla de columnas temporales locales # [...] como (seleccionar [...] , ...'

SAP DBTech JDBC: [2048]: error de almacén de columnas: error de tabla de búsqueda: [47] mensaje no encontrado

El error ocurre al ejecutar una declaración de unión completa en dos tablas bastante grandes.

  • ¿Estoy en lo correcto con mi suposición inicial y el error realmente es causado por HANA quedándose sin memoria?
  • ¡Cualquier idea sobre cómo puedo evitar este error sin reducir los datos (por ejemplo, agregando restricciones "where") sería muy apreciada!

Muchas gracias de antemano por sus respuestas,

Tobias Müller

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

No tengo idea si esto está relacionado con la memoria.

¿Por qué no revisas el archivo de rastreo del indexserver?

Y publicar el SQL completo seguramente no será malo 🙂

- Lars

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Verifica el tamaño del parámetro MAXIMUM_SIZE_OF_ROW_STORE. Asegúrate de no haber excedido la RAM física, la RAM asignada o el tamaño del parámetro. Ten en cuenta que las bases de datos columnares son un tipo antiguo de base de datos heredada que fue reemplazada por las bases de datos relacionales hace más de 40 años debido a estos problemas de memoria. En lugar de encontrar datos por identificadores únicos, buscan a través de todos los datos utilizando columnas en cada ejecución. El tamaño de los datos en memoria puede superar fácilmente la RAM física, la RAM asignada o el tamaño del parámetro. IBM tiene este mismo problema con DASHDB/DB2 WAREHOUSE. Parece que las lecciones del pasado han sido olvidadas y se están repitiendo en el presente. Para prevenir el problema, simplemente planifica que el tamaño de la RAM y los parámetros sea mayor que la ejecución más grande posible o mayor que tus datos multiplicados por el número de usuarios concurrentes. Dado que SAP Hana S4 es una base de datos en memoria que utiliza almacenamiento de columnas, puede superar el tamaño de los datos. También puedes verificar si la base de datos puede superar el límite de memoria de 32 bits de 2GB, el antiguo límite de hace 40 años. La mayoría de las tecnologías heredadas tienen limitaciones de memoria heredadas. Por ejemplo, una base de datos tabular tiene un límite de 2 mil millones menos 3 registros. Algunas de las antiguas bases de datos columnares tenían un límite duro de 2GB para el tamaño de la consulta en sí misma o el retorno de los datos de la consulta. Dado que este error es reproducible en cada base de datos de almacenamiento de columnas, es probable que HANA tenga la misma limitación. (CÓDIGO DE ERROR 2048 = el antiguo límite de memoria de 32 bits de 2GB de las bases de datos columnares). (Ver historia de la base de datos en Edgar F. Codd y sistemas de bases de datos ACID compatibles) https://help.sap.com/viewer/7c78579ce9b14a669c1f3295b0d8ca16/Cloud/en-US/20a760537519101497e3cfe07b3...

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Ravi,

1) Intenté eso agregando una cláusula where bastante restrictiva -> funciona bien y confirma mi suposición inicial de que Hana se está quedando sin memoria.

2) No es posible por razones operativas 😞

Intentaré alcanzar mi objetivo utilizando una vista analítica. Parece prometedor en este momento 🙂

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Tobias,

Un par de sugerencias:

1) ¿Podrías intentar CON la cláusula WHERE (reduciendo datos) solo para asegurarte de que no haya errores de sintaxis en tu código y de que se haya creado la tabla temporal local? Esto también garantizará que el problema probablemente esté relacionado con un problema de memoria.

2) ¿Podrías intentar descargar algunas de las otras tablas/datos/realizar una fusión delta, en resumen, reducir la memoria consumida y probar el código SIN la cláusula WHERE?

También sería útil si pudieras publicar tu código para entenderlo mejor. Además, menciona cuántos datos se esperan en la instrucción SELECT, el tamaño de algunos datos en las tablas subyacentes utilizadas en la instrucción SELECT.

Espero que cuando mencionaste FULL join, no te refieras a FULL OUTER join.

Saludos,

Ravi

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?