Almacenamiento en caché de Essbase y rendimiento de cálculo
Para optimizar el rendimiento del cálculo, especialmente para cálculos de gran tamaño, Essbase utiliza cachés para coordinar el uso de memoria. Asegúrese de que la caché de calculadora, si se utiliza, sea lo suficientemente grande como para optimizar los cálculos. Revise cómo puede ser relevante la caché de índice, la caché de datos, la caché de calculadora dinámica y la caché de aplicación.
Al calcular un cubo, Essbase utiliza aproximadamente 30 bytes de memoria por miembro en el esquema. Por lo tanto, si el cubo tiene 5.000 miembros, Essbase necesita aproximadamente 150 KB de memoria para calcularlo.
Note:
Puede evitar el uso excesivo de memoria combinando scripts de cálculo. Puede obtener un buen rendimiento mediante el cálculo en paralelo con un único script de cálculo. Consulte Uso de Cálculo Paralelo.
Essbase utiliza la memoria para optimizar el rendimiento del cálculo, especialmente para cálculos de gran tamaño. La cantidad de memoria utilizada no se puede controlar, excepto mediante la modificación del tamaño del esquema del cubo. Sin embargo, puede asegurarse de que los tamaños de caché de memoria permiten a Essbase optimizar el cálculo.
Essbase utiliza las siguientes cachés para coordinar el uso de memoria:
-
Caché de calculadora.
Al calcular por primera vez un cubo, el tamaño de la caché de calculadora es significativo para el rendimiento del cálculo. Si es posible, asegúrese de que la caché de calculadora sea lo suficientemente grande como para que Essbase utilice la opción óptima de caché de calculadora.
Consulte Tamaño de Caché de la Calculadora.
-
Caché de calculadora dinámica. Consulte Tamaño de las cachés de calculadora dinámica.
-
Caché de índice. Si el cubo es grande, la caché de índice por defecto no es lo suficientemente grande como para proporcionar un rendimiento de cálculo óptimo. Consulte la propiedad de configuración de la aplicación INDEXCACHESIZE o MaxL alter database set index_cache_size.
-
Caché de datos. Consulte la propiedad de configuración de la aplicación DATACACHESIZE o MaxL alter database set data_cache_size.
-
Caché de archivo de los datos.
-
La caché de aplicación. Si se utiliza el modo híbrido en cubos de almacenamiento de bloques, la caché de aplicación puede ayudarle a gestionar el uso de memoria para las recuperaciones. La caché de aplicación es similar a la caché de almacenamiento agregado; para obtener más información, consulte Caché de almacenamiento agregado.
Tamaño de la Caché de la Calculadora
El mejor tamaño para la caché de calculadora de Essbase, si lo utiliza, depende del número y la densidad de las dimensiones ligeras del esquema. Comprender el mapa de bits de la caché de calculadora le ayudará a ajustar el tamaño óptimo de la caché de calculadora.
Para optimizar la gestión de bloques, Essbase puede crear un bitmap, cuyo tamaño está controlado por el tamaño de la caché de calculadora, para registrar y realizar un seguimiento de los bloques de datos durante un cálculo. El bitmap es un método de recuperación más rápido para Essbase que la E/S de disco, especialmente si calcula un cubo por primera vez o calcula un cubo con datos dispersos.
Essbase utiliza el mapa de bits de caché de calculadora si la base de datos tiene al menos dos dimensiones dispersas y también se cumple una de estas condiciones:
-
Calcula al menos una dimensión ligera completa.
-
Especifique el comando SET CACHE ALL en una secuencia de comandos de cálculo.
Acerca del mapa de bits de caché de calculadora
Para la caché de calculadora, Essbase separa las dimensiones ligeras en dos grupos:
-
Dimensiones de mapa de bits: dimensiones dispersas que Essbase encaja en el mapa de bits hasta que esté lleno. Cada combinación de miembros de las dimensiones ligeras colocadas en el mapa de bits ocupa 1 bit de memoria. Debe haber suficiente espacio en el mapa de bits para que cada combinación de miembros de una dimensión ligera se coloque en el mapa de bits.
-
Dimensiones de anclaje: una o más dimensiones ligeras restantes en el esquema de la base de datos que no encajan en el mapa de bits.
Essbase comienza con la primera dimensión ligera del esquema y se ajusta a la mayor cantidad posible en el mapa de bits. Las dimensiones que se ajustan son las dimensiones de bitmap. Debido a que la caché de calculadora controla el tamaño del mapa de bits, el número de dimensiones ligeras que pueden caber depende del tamaño de la caché de calculadora.
Las dimensiones ligeras restantes son las dimensiones de anclaje. Para las dimensiones de anclaje, Essbase no puede utilizar el mapa de bits para determinar si existen bloques.
Para ver qué dimensiones son dimensiones de anclaje y cuáles son dimensiones de mapa de bits, utilice el comando de cálculo DETAIL de SET MSG para mostrar información de mapa de bits en el log de la aplicación.
Pida cuidadosamente las dimensiones dispersas en el esquema para que se puedan colocar tantas dimensiones como sea posible en el mapa de bits. Comience con la dimensión que contiene el menor número de miembros y continúe hasta que la dimensión con el mayor número de miembros sea la última. Este orden permite que más dimensiones se ajusten al mapa de bits y da como resultado un rendimiento de cálculo mejorado.
Note:
El orden de las dimensiones ligeras en el esquema también afecta al rendimiento de la consulta. Consulte Diseño de un esquema para optimizar el rendimiento.
Essbase utiliza un solo bitmap si hay varias dimensiones de anclaje (o si la caché de calculadora no es lo suficientemente grande como para admitir varios bitmaps) y utiliza varios bitmaps si hay una dimensión de anclaje. Un solo bitmap utiliza la menor cantidad de memoria, pero es menos eficaz que varios bitmaps.
Varios bitmaps utilizan más memoria, pero son más rápidos que utilizar un solo bitmap. Un mapa de bits realiza un seguimiento de los bloques secundarios y otro de los bloques principales. La mejora del rendimiento es especialmente alta cuando se calcula la base de datos por primera vez.
El número de bitmaps utilizados viene determinado por el número máximo de padres dependientes para cualquier miembro de la dimensión de anclaje. Un miembro tiene un padre dependiente, a menos que tenga un miembro compartido. Por ejemplo, considere la dimensión Product de la base de datos Sample.Basic. El miembro Cola (100-10) tiene un padre, Colas (100). Sin embargo, Diet Cola (100-20) tiene dos padres, Diet Drinks (Diet) y Colas (100). Ningún miembro del producto tiene más de dos padres dependientes. Por lo tanto, si Product es la dimensión de anclaje, el máximo de padres dependientes es dos.
Essbase selecciona una de las tres opciones, como se muestra en la tabla siguiente, para el cálculo:
Tabla 34-2 Opciones de caché de calculadora
| Opción | Método | Calificación de rendimiento |
|---|---|---|
|
1 |
Dimensión de anclaje única, varios bitmaps |
1 |
|
2 |
Dimensión de anclaje única, mapa de bits único |
2 |
|
3 |
Varias dimensiones de anclaje, mapa de bits único |
3 |
Essbase elige el método de rendimiento óptimo para un cálculo, en función del tamaño de la caché de calculadora. Si el tamaño de la caché de calculadora es demasiado pequeño para cualquiera de las opciones anteriores, Essbase no utiliza una caché de calculadora. El rendimiento del cálculo puede verse significativamente afectado.
La activación del cálculo paralelo puede cambiar la opción de caché de calculadora que se utiliza. Consulte Relaciones entre el cálculo paralelo de CALCPARALLEL y otras funciones de Essbase.
Atención:
Si está calculando la base de datos por primera vez, el tamaño de la caché de calculadora es especialmente significativo para el rendimiento del cálculo. Si es posible, asegúrese de que la caché de calculadora sea lo suficientemente grande como para que Essbase utilice la opción óptima de caché de calculadora.
Determinación del Tamaño de Caché de la Calculadora
El tamaño óptimo de la caché de calculadora depende de la memoria que el sistema tiene disponible y de la naturaleza y configuración del cubo.
Con la siguiente fórmula, puede calcular el tamaño de caché de calculadora necesario para que Essbase elija cada una de las tres opciones de la tabla Opciones de Caché de Calculadora anterior:
Calculator cache = Bitmap size in bytes * Number of bitmaps
donde
Bitmap size in bytes = Max ((member combinations on the bitmap dimensions / 8), 4)
y dónde
Number of bitmaps = Maximum number of dependent parents in the anchoring dimension + 2 constant bitmapsNote:
El tamaño mínimo del mapa de bits es de 4 bytes. Si (combinaciones de miembros en las dimensiones de mapa de bits/8) son inferiores a 4 bytes, Essbase utiliza un tamaño de mapa de bits de 4 bytes.
Considere un cubo de ejemplo con cinco dimensiones dispersas (S1 a S5):
Tabla 34-3 Ejemplo: cubo de ejemplo con cinco dimensiones dispersas
| Dimensión Dispersa | Número de Miembros | Padres dependientes |
|---|---|---|
|
S1 |
20 |
No se aplica |
|
S2 |
20 |
No se aplica |
|
S3 |
50 |
No se aplica |
|
S4 |
50 |
No se aplica |
|
S5 |
200 |
3 |
Utilice este cubo de ejemplo para los siguientes cálculos de ejemplo:
- Opción 1: Dimensión de anclaje única, varios mapas de bits
- Opción 2: Dimensión de anclaje única, mapa de bits único
- Opción 3: Varias dimensiones de anclaje, mapa de bits único
Opción 1: Dimensión de anclaje única, varios mapas de bits
Para este cálculo de ejemplo, suponga los siguientes hechos sobre una base de datos:
-
Dimensiones del mapa de bits: S1, S2, S3, S4
-
Dimensión de anclaje: S5
-
Padres dependientes en la dimensión de anclaje: 3
Realice el siguiente cálculo:
Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
= (20 * 20 * 50 * 50) / 8
= 125,000 bytes
Number of bitmaps = Maximum number of dependent parents in the anchoring dimension
= +
= 2 constant bitmaps
= 3 + 2
= 5
Calculator cache = Bitmap size * Number of bitmaps
= 125,000 * 5
= 625,000 bytesPara que Essbase utilice varios bitmaps para esta base de datos con una dimensión de anclaje, la caché de calculadora debe tener 625 000 bytes.
Opción 2: Dimensión de anclaje única, mapa de bits único
Para este cálculo de ejemplo, suponga los siguientes hechos sobre una base de datos:
-
Dimensiones del mapa de bits: S1, S2, S3, S4
-
Dimensión de anclaje: S5
-
Padres dependientes en la dimensión de anclaje: No aplicable
Realice el siguiente cálculo:
Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
= (20 * 20 * 50 * 50) / 8
= 125,000 bytes
Number of bitmaps = Single bitmap
= 1
Calculator cache = Bitmap size * Number of bitmaps
= 125,000 * 1
= 125,000 bytesPara que Essbase utilice un mapa de bits único para esta base de datos con una dimensión de anclaje, la caché de calculadora debe tener 125 000 bytes.
Opción 3: Varias dimensiones de anclaje, mapa de bits único
Para este cálculo de ejemplo, suponga los siguientes hechos sobre una base de datos:
-
Dimensiones del mapa de bits: S1, S2, S3
-
Dimensiones de anclaje: S4, S5
-
Principales dependientes en dimensiones de anclaje: No aplicable
Realice el siguiente cálculo:
Realice el siguiente cálculo:
Bitmap size in bytes = (S1 * S2 * S3) / 8
= (20 * 20 * 50) / 8
= 2,500 bytes
Number of bitmaps = Single bitmap
= 1
Calculator cache = Bitmap size * Number of bitmaps
= 2,500 * 1
= 2,500 bytesPara que Essbase utilice un mapa de bits único para esta base de datos con varias dimensiones de anclaje, la caché de calculadora debe tener 2.500 bytes.
La siguiente tabla muestra qué opción de caché de calculadora utiliza Essbase, según el tamaño de caché de calculadora especificado:
Tabla 34-4 Selección de la opción de caché de calculadora basada en el tamaño de caché de calculadora
| Tamaño mínimo especificado | Opción seleccionada |
|---|---|
|
625,000 bytes |
Opción 1 (proporciona un rendimiento óptimo) |
|
125,000 bytes |
Opción 2 |
|
2.500 bytesPaso 1 |
Opción 3 |
Nota a Pie de Página 1
Si especifica un tamaño de caché de calculadora de menos de 2.500 bytes, Essbase no utiliza una caché de calculadora durante el cálculo. El rendimiento del cálculo puede verse significativamente afectado.
Puede comprobar qué opción de caché de calculadora puede utilizar Essbase mediante el comando SET MSG SUMMARY en un script de cálculo. Ejecute el siguiente script de cálculo en el cubo vacío:
SET MSG SUMMARY;
CALC ALL;Essbase muestra la configuración de la caché de calculadora en el registro de la aplicación. Consulte SET Commands for Calc Testing and Statistics.
El tamaño máximo de caché de calculadora que puede especificar es de 200 000 000 bytes. El valor por defecto es 200,000 bytes. El tamaño de la caché de calculadora que elija depende de la memoria disponible y de la configuración del cubo.
Note:
Los tamaños de la calculadora, el índice, el archivo de datos y las cachés de datos suelen tener un mayor efecto en el rendimiento si el cálculo se basa más en agregaciones y menos en cálculos de fórmula.
Si está calculando el cubo por primera vez, el tamaño de la caché de calculadora es especialmente significativo. Si es posible, asegúrese de que la caché de calculadora sea lo suficientemente grande como para que Essbase utilice la opción 1.
Puede utilizar el tamaño predeterminado de la caché de calculadora o puede definir el tamaño de la caché de calculadora en un script de cálculo. Si establece el tamaño a partir de un script de cálculo, la configuración se utiliza solo durante la duración del script de cálculo. Consulte la configuración de la secuencia de comandos de cálculo SET CACHE y CALCCACHE.
Ajustar el tamaño de las cachés de la calculadora dinámica
Para cada cubo abierto, Essbase asigna un área en una caché de calculadora dinámica para los bloques de datos. Para determinar si la caché de calculadora dinámica se está utilizando de forma eficaz, revise los valores de configuración y log de la aplicación.
Revisar uso de caché de calculadora dinámica
El valor de configuración DYNCALCCACHEMAXSIZE especifica el tamaño máximo de cada caché de calculadora dinámica en el servidor de Essbase. Por defecto, el tamaño está definido en 20 MB. Essbase asigna el área en una caché de calculadora dinámica para los bloques de datos hasta que se asigne el área de memoria máxima especificada por la configuración DYNCALCACHEMAXSIZE.
Essbase escribe dos mensajes en el log de la aplicación para cada recuperación de datos. En el siguiente ejemplo (truncado), el primer mensaje describe el tiempo total necesario para la recuperación:
[2024-07-27T16:43:52.707+00:00] ... [EXEC_TIME: 0.53] Regular extractor completed successfully
[2024-07-27T16:43:52.707+00:00] ... Regular Extractor Big Block Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]Si se utiliza una caché de calculadora dinámica, un segundo mensaje muestra el número de bloques calculados dentro de la caché de calculadora de datos (Dyn.Calc.Cache: [n]) y el número de bloques calculados en memoria fuera de la caché de calculadora dinámica (no Din.Calc.Cache: [n]).
Para determinar si la caché de calculadora dinámica se está utilizando de forma eficaz, revise ambos mensajes y considere los valores de configuración. Por ejemplo, si el mensaje indica que los bloques se calcularon fuera y en una caché de calculadora dinámica, puede aumentar la configuración de DYNCALCCACHEMAXSIZE.
Si el tamaño máximo especificado es todo lo que puede permitirse y si el uso de memoria fuera de la caché de calculadora para completar recuperaciones calculadas dinámicamente provoca retrasos inaceptables, defina DYNCALCCACHEWAITFORBLK en TRUE.
Puede utilizar la sentencia MaxL de la base de datos de consultas con la gramática estadísticas de rendimiento para ver un resumen de la actividad de la caché de calculadora dinámica.
Cambiar tamaño de caché de calculadora dinámica
Hay cinco valores de configuración que son relevantes para las cachés de calculadora dinámica. Los valores óptimos para estos valores dependen de la memoria del equipo del servidor de Essbase, la configuración de las bases de datos de Essbase y la naturaleza de las consultas de usuario.
La siguiente descripción de cada valor de configuración incluye recomendaciones sobre cómo determinar valores para el sistema. Para que coincida con los requisitos únicos de su sitio, es posible que deba probar y ajustar la configuración.
-
DYNCALCCACHEMAXSIZE: este valor especifica el tamaño máximo que Essbase puede asignar a cada caché de calculadora dinámica.
Valor de ajuste recomendado = C * S * U.
-
C es el valor del número máximo de bloques que Essbase necesita corregir (obtener capacidad de direccionamiento) al calcular un bloque. Por lo general, un valor de 100 es una buena aproximación para este valor. Este número puede ser mayor si se va a consolidar un número muy elevado de hijos en un cálculo de fórmula.
-
S es el tamaño del bloque ampliado más grande en todas las bases de datos del equipo de Essbase Server. Para calcular el tamaño de bloque ampliado, multiplique el número de miembros (incluidos los miembros de Cálculo dinámico y los miembros de serie temporal dinámica) en cada dimensión densa juntos para el número de celdas del bloque y multiplique el número de celdas por el tamaño de cada celda de miembro, 8 bytes.
Por ejemplo, considere el recuento de miembros en dimensiones densas en Sample.Basic (los miembros de sólo etiqueta no se cuentan):
-
19 (año, con 12 miembros almacenados y 7 miembros de cálculo dinámico, incluidos HTD y QTD)
-
14 (Medidas, con 8 miembros almacenados y 6 miembros de cálculo dinámico)
-
4 (Escenario, con 2 miembros almacenados y 2 miembros de cálculo dinámico)
S = 19 * 14 * 4 celdas (8 bytes / celda) = 8512 bytes por bloque
Este número se muestra en el log de la aplicación como tamaño de bloque lógico.
-
-
U es el número máximo de usuarios simultáneos esperados en la base de datos que tiene el mayor número de usuarios simultáneos.
Al asignar el valor 0 (cero) a DYNCALCACHEMAXSIZE, se indica a Essbase que no utilice cachés de calculadora dinámica.
Por defecto, el tamaño de este valor es de 20 MB (20 971 520 bytes).
-
-
DYNCALCCACHEWAITFORBLK: si Essbase utiliza todo el área asignada para una caché de calculadora dinámica, este valor indica a Essbase si debe esperar hasta que haya espacio disponible en la caché o si debe escribir y calcular inmediatamente los bloques en memoria fuera de la caché. Si la caché es demasiado pequeña, es posible que varios threads estén en cola.
Valor de configuración recomendado = FALSE (valor por defecto).
Antes de establecerlo en Verdadero, pruebe estas alternativas:
-
Agregar memoria física a la máquina del servidor
-
Aumente el valor de DYNCALCCACHEMAXSIZE, pruebe y repita hasta que compruebe que no puede utilizar más memoria para la caché de calculadora dinámica.
-
-
DYNCALCCACHEBLKTIMEOUT: si Essbase debe esperar a que haya espacio disponible en la caché de calculadora dinámica, este valor define cuánto tiempo espera.
Valor de configuración recomendado = WT/B.
-
WT es el tiempo de espera máximo tolerable para una consulta; por ejemplo, 5 segundos.
-
B es el número total de bloques lógicos a los que se accede en la consulta más grande.
Para determinar el valor de B, compruebe en los mensajes del log de la aplicación el mayor número de "asignaciones de bloques grandes" de Dyn.Calc.Cache para una consulta.
-
-
DYNCALCCACHEBLKRELEASE: si Essbase ha esperado el tiempo y el espacio especificados aún no están disponibles en la caché de calculadora dinámica, este valor indica a Essbase si debe escribir y calcular los bloques inmediatamente fuera de la caché de calculadora dinámica o si desea crear espacio mediante el intercambio de bloques y la compresión temporal de los bloques intercambiados en un buffer.
Valor de configuración recomendado = FALSE (valor por defecto).
Establézcalo en Verdadero solo si está experimentando problemas graves de falta de memoria.
-
DYNCALCCACHECOMPRBLKBUFSIZE: si Essbase ha esperado el tiempo de espera especificado y el valor de DYNCALCCACHEBLKRELEASE es TRUE, este valor es el tamaño del buffer de bloque comprimido de la caché de calculadora dinámica.
Valor de ajuste recomendado = (C * S) / 2
donde C es el valor del número máximo de bloques que Essbase necesita corregir (obtener capacidad de direccionamiento) al calcular un bloque, y S es el tamaño del bloque ampliado más grande en todas las bases de datos del equipo. Calcule C y S de la misma manera que se describe o la configuración de DYNCALCCACHEMAXSIZE.