Caches do Essbase e Desempenho de Cálculo

Para otimizar o desempenho do cálculo, especialmente para cálculos grandes, o Essbase usa caches para coordenar o uso da memória. Certifique-se de que o cache da calculadora, se usado, seja grande o suficiente para otimizar os cálculos. Analise como o cache de índice, o cache de dados, o cache da calculadora dinâmica e o cache do aplicativo podem ser relevantes.

Ao calcular um cubo, o Essbase usa aproximadamente 30 bytes de memória por membro no outline. Portanto, se o cubo tiver 5.000 membros, o Essbase precisará de aproximadamente 150 KB de memória para calculá-lo.

Observação:

É possível evitar o uso excessivo de memória ao combinar scripts de cálculo. Você pode obter um bom desempenho usando o cálculo paralelo com um único script de cálculo. Consulte Usar Cálculo Paralelo.

O Essbase usa memória para otimizar o desempenho do cálculo, especialmente para cálculos grandes. A quantidade de memória usada não é controlável, exceto alterando o tamanho do contorno do cubo. No entanto, você pode garantir que os tamanhos do cache de memória ativem o Essbase para otimizar o cálculo.

O Essbase usa os seguintes caches para coordenar o uso da memória:

  • Cache da calculadora.

    Quando você calcula um cubo pela primeira vez, o tamanho do cache da calculadora é significativo para o desempenho do cálculo. Se possível, certifique-se de que o cache da calculadora seja grande o suficiente para que o Essbase use a opção de cache da calculadora ideal.

    Consulte Tamanho do Cache da Calculadora.

  • Cache de calculadora dinâmica. Consulte Tamanho dos Caches da Calculadora Dinâmica.

  • Cache de índice. Se o cubo for grande, o cache de índice padrão não será grande o suficiente para fornecer um desempenho de cálculo ideal. Consulte a propriedade de configuração do aplicativo INDEXCACHESIZE ou MaxL alter database set index_cache_size.

  • Cache de dados. Consulte a propriedade de configuração do aplicativo DATACACHESIZE ou MaxL alterar banco de dados set data_cache_size.

  • Cache de arquivos de Dados.

  • Cache de aplicativo. Se o modo híbrido for usado em cubos de armazenamento em blocos, o cache do aplicativo poderá ajudá-lo a gerenciar o uso da memória para recuperações. O cache do aplicativo é semelhante ao cache de armazenamento agregado; para obter mais informações, consulte Cache de Armazenamento Agregado.

Dimensionar o Cache da Calculadora

O melhor tamanho para o cache da calculadora do Essbase, se você usá-lo, depende do número e da densidade das dimensões esparsas no outline. Compreender o bitmap do cache da calculadora irá ajudá-lo a dimensionar o cache da calculadora de forma ideal.

Para otimizar o gerenciamento de blocos, o Essbase pode criar um bitmap, cujo tamanho é controlado pelo tamanho do cache da calculadora, para registrar e rastrear blocos de dados durante um cálculo. O bitmap é um método de recuperação mais rápido para o Essbase do que a E/S do disco, especialmente se você estiver calculando um cubo pela primeira vez ou calculando um cubo com dados esparsos.

O Essbase usa o bitmap de cache da calculadora se o banco de dados tiver pelo menos duas dimensões esparsas e uma dessas condições também for atendida:

  • Você calcula pelo menos uma dimensão esparsa completa.

  • Você especifica o comando SET CACHE ALL em um script de cálculo.

Sobre o Bitmap de Cache da Calculadora

Para o cache da calculadora, o Essbase separa dimensões esparsas em dois grupos:

  • Dimensões de bitmap: As dimensões esparsas que o Essbase se encaixa no bitmap até que ele esteja cheio. Cada combinação de membros das dimensões esparsas colocadas no bitmap ocupa 1 bit de memória. Deve haver espaço suficiente no bitmap para que cada combinação de membro de uma dimensão esparsa seja colocada no bitmap.

  • Dimensões de ancoragem: As restantes uma ou mais dimensões esparsas no outline do banco de dados que não se encaixam no bitmap.

O Essbase começa com a primeira dimensão esparsa no outline e se encaixa no maior número possível no bitmap. As dimensões que se encaixam são as dimensões bitmap. Como o cache da calculadora controla o tamanho do bitmap, o número de dimensões esparsas que podem caber depende do tamanho do cache da calculadora.

As restantes dimensões esparsas são as dimensões de ancoragem. Para dimensões de ancoragem, o Essbase não pode usar o bitmap para determinar se existem blocos.

Para ver quais dimensões estão ancorando dimensões e quais são dimensões de bitmap, use o comando de cálculo SET MSG DETAIL para exibir informações de bitmap no log do aplicativo.

Ordene cuidadosamente as dimensões esparsas em seu contorno para que o maior número possível de dimensões possa ser colocado no bitmap. Comece com a dimensão que contém o menor número de membros e continue até que a dimensão com o maior número de membros seja a última. Essa ordem permite que mais dimensões se ajustem ao bitmap e resulta em melhor desempenho de cálculo.

Observação:

A ordem das dimensões esparsas no outline também afeta o desempenho da consulta. Consulte Criar um Esquema de Tópicos para Otimizar o Desempenho.

O Essbase usa um único bitmap se houver várias dimensões de ancoragem (ou se o cache da calculadora não for grande o suficiente para suportar vários bitmaps) e usará vários bitmaps se houver uma dimensão de ancoragem. Um único bitmap usa menos memória, mas é menos eficiente do que vários bitmaps.

Vários bitmaps usam mais memória, mas são mais rápidos do que usar um único bitmap. Um bitmap rastreia blocos filhos e outro rastreia blocos pais. A melhoria de desempenho é particularmente alta quando você está calculando o banco de dados pela primeira vez.

O número de bitmaps usados é determinado pelo número máximo de pais dependentes para qualquer membro na dimensão de ancoragem. Um membro tem um pai dependente, a menos que tenha um membro compartilhado. Por exemplo, considere a dimensão Produto do banco de dados Sample.Basic. O membro Cola (100-10) tem um pai, Colas (100). No entanto, Diet Cola (100-20) tem dois pais, Diet Drinks (Diet) e Colas (100). Nenhum membro do Produto tem mais de dois pais dependentes. Portanto, se Produto for a dimensão de ancoragem, o máximo de pais dependentes será dois.

O Essbase escolhe uma das três opções, conforme mostrado na tabela abaixo, para o cálculo:

Tabela 34-2 Opções de Cache da Calculadora

Opção Método Relação de Execução

1

Dimensão de ancoragem única, vários bitmaps

1

2

Dimensão de ancoragem única, bitmap único

2

3

Várias dimensões de ancoragem, bitmap único

3

O Essbase escolhe o método de desempenho ideal para um cálculo, com base no tamanho do cache da calculadora. Se o tamanho do cache da calculadora for muito pequeno para qualquer uma das opções acima, o Essbase não usará um cache da calculadora. O desempenho do cálculo pode ser significativamente prejudicado.

A ativação do cálculo paralelo pode alterar qual opção de cache da calculadora é usada. Consulte Relacionamento entre Cálculo Paralelo CALCPARALLEL e Outros Recursos do Essbase.

Atenção:

Se você estiver calculando o banco de dados pela primeira vez, o tamanho do cache da calculadora será particularmente significativo para o desempenho do cálculo. Se possível, certifique-se de que o cache da calculadora seja grande o suficiente para que o Essbase use a opção de cache da calculadora ideal.

Determinar o Tamanho do Cache da Calculadora

O tamanho ideal do cache da calculadora depende da memória que o sistema tem disponível e da natureza e configuração do cubo.

Usando a seguinte fórmula, você pode calcular o tamanho do cache da calculadora necessário para que o Essbase escolha cada uma das três opções na tabela Opções de Cache da Calculadora acima:

Calculator cache = Bitmap size in bytes * Number of bitmaps

em que

Bitmap size in bytes = Max ((member combinations on the bitmap dimensions / 8), 4)

em que

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension + 2 constant bitmaps

Observação:

O tamanho mínimo do bitmap é 4 bytes. Se (combinações de membros nas dimensões de bitmap/8) forem menores que 4 bytes, o Essbase usará um tamanho de bitmap de 4 bytes.

Considere um cubo de amostra com cinco dimensões esparsas (S1 a S5):

Tabela 34-3 Exemplo: Cubo de Amostra com Cinco Dimensões Esparsas

Dimensão Esparsa Número de Membros Pais Dependentes

S1

20

Não se aplica

S2

20

Não se aplica

S3

50

Não se aplica

S4

50

Não se aplica

S5

200

3

Use este cubo de amostra para os seguintes cálculos de amostra:

  • Opção 1: Dimensão de Ancoragem Única, Múltiplos Bitmaps
  • Opção 2: Dimensão de ancoragem única, bitmap único
  • Opção 3: Várias dimensões de ancoragem, bitmap único

Opção 1: Dimensão de Ancoragem Única, Múltiplos Bitmaps

Para esse cálculo de amostra, considere os seguintes fatos sobre um banco de dados:

  • Dimensões do bitmap: S1, S2, S3, S4

  • Dimensão de ancoragem: S5

  • Pais dependentes na dimensão de ancoragem: 3

Executar este 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 bytes

Para que o Essbase use vários bitmaps para esse banco de dados com uma dimensão de ancoragem, o cache da calculadora deve ter 625.000 bytes.

Opção 2: Dimensão de ancoragem única, bitmap único

Para esse cálculo de amostra, considere os seguintes fatos sobre um banco de dados:

  • Dimensões do bitmap: S1, S2, S3, S4

  • Dimensão de ancoragem: S5

  • Pais dependentes na dimensão de ancoragem: Não aplicável

Executar este 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 bytes

Para que o Essbase use um único bitmap para esse banco de dados com uma dimensão de ancoragem, o cache da calculadora deve ter 125.000 bytes.

Opção 3: Várias dimensões de ancoragem, bitmap único

Para esse cálculo de amostra, considere os seguintes fatos sobre um banco de dados:

  • Dimensões do bitmap: S1, S2, S3

  • Dimensões de ancoragem: S4, S5

  • Pais dependentes em dimensões de ancoragem: Não aplicável

Executar este cálculo:

Executar este 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 bytes

Para que o Essbase use um único bitmap para esse banco de dados com várias dimensões de ancoragem, o cache da calculadora deve ter 2.500 bytes.

A tabela a seguir mostra qual opção de cache da calculadora o Essbase usa, dependendo do tamanho do cache da calculadora especificado:

Tabela 34-4 Seleção da Opção de Cache da Calculadora com Base no Tamanho do Cache da Calculadora

Tamanho Mínimo Especificado Opção Selecionada

625,000 bytes

Opção 1 (oferece desempenho ideal)

125,000 bytes

Opção 2

2.500 bytesRodapé 1

Opção 3

Rodapé 1

Se você especificar um tamanho de cache de calculadora menor que 2.500 bytes, o Essbase não usará um cache de calculadora durante o cálculo. O desempenho do cálculo pode ser significativamente prejudicado.

Você pode verificar qual opção de cache de calculadora o Essbase pode usar usando o comando RESUMO SET MSG em um script de cálculo. Execute o seguinte script de cálculo no cubo vazio:

SET MSG SUMMARY;
CALC ALL;

O Essbase exibe a configuração do cache da calculadora no log do aplicativo. Consulte Comandos SET para Teste de Cálculo e Estatísticas.

O tamanho máximo do cache da calculadora que você pode especificar é 200.000.000 bytes. O padrão é 200,000 bytes. O tamanho do cache da calculadora escolhido depende da memória disponível e da configuração do cubo.

Observação:

Os tamanhos da calculadora, índice, arquivo de dados e caches de dados geralmente têm um efeito maior no desempenho se o cálculo for baseado mais em agregações e menos em cálculos de fórmula.

Se você estiver calculando o cubo pela primeira vez, o tamanho do cache da calculadora será particularmente significativo. Se possível, verifique se o cache da calculadora é grande o suficiente para que o Essbase use a Opção 1.

Você pode usar o tamanho padrão do cache da calculadora ou pode definir o tamanho do cache da calculadora em um script de cálculo. Se você definir o tamanho de um script de cálculo, a configuração será usada somente para a duração do script de cálculo. Consulte o comando do script de cálculo SET CACHE e a configuração CALCCACHE.

Dimensione os Caches da Calculadora Dinâmica

Para cada cubo aberto, o Essbase aloca uma área em um cache de calculadora dinâmica para blocos de dados. Para determinar se o cache da calculadora dinâmica está sendo usado de forma eficaz, revise o log do aplicativo e as definições de configuração.

Revisar Uso do Cache da Calculadora Dinâmica

A definição de configuração DYNCALCCACHEMAXSIZE especifica o tamanho máximo de cada cache de calculadora dinâmica no Essbase Server. Por padrão, o tamanho é definido como 20 MB. O Essbase aloca área em um cache de calculadora dinâmica para blocos de dados até que a área de memória máxima especificada pela definição DYNCALCACHEMAXSIZE seja alocada.

O Essbase grava duas mensagens no log do aplicativo para cada recuperação de dados. No exemplo a seguir (truncado), a primeira mensagem descreve o tempo total necessário para a recuperação:

[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]

Se um cache de calculadora dinâmica for usado, uma segunda mensagem exibirá o número de blocos calculados no cache da calculadora de dados (Dyn.Calc.Cache: [n]) e o número de blocos calculados na memória fora do cache da calculadora dinâmica (non-Dyn.Calc.Cache: [n]).

Para determinar se o cache da calculadora dinâmica está sendo usado de forma eficaz, revise as duas mensagens e considere suas definições de configuração. Por exemplo, se a mensagem indicar que os blocos foram calculados fora e em um cache de calculadora dinâmica, você poderá aumentar a configuração DYNCALCCACHEMAXSIZE.

Se o tamanho máximo especificado for tudo o que você puder pagar e se o uso de memória fora do cache da calculadora para concluir recuperações calculadas dinamicamente resultar em atrasos inaceitáveis, defina DYNCALCCACHEWAITFORBLK como TRUE.

Você pode usar a instrução MaxL do banco de dados de consulta com a gramática estatísticas de desempenho para exibir um resumo da atividade do cache da calculadora dinâmica.

Alterar Tamanho do Cache da Calculadora Dinâmica

Há cinco definições de configuração que são relevantes para caches de calculadora dinâmica. Os valores ideais para essas configurações dependem da memória na máquina do Essbase Server, da configuração dos bancos de dados do Essbase e da natureza das consultas do usuário.

A descrição a seguir de cada definição de configuração inclui recomendações de como determinar valores para o sistema. Para atender aos requisitos exclusivos do seu site, talvez seja necessário testar e ajustar as configurações.

  • DYNCALCCACHEMAXSIZE: Esta definição especifica o tamanho máximo que o Essbase pode alocar para cada cache de calculadora dinâmica.

    Valor de configuração recomendado = C * S * U.

    • C é o valor do número máximo de blocos que o Essbase precisa corrigir (obter endereçamento) ao calcular um bloco. Normalmente, um valor de 100 é uma boa aproximação para esse valor. Esse número pode ser maior se você estiver consolidando um número muito grande de filhos em um cálculo de fórmula.

    • S é o tamanho do maior bloco expandido em todos os bancos de dados da máquina do Essbase Server. Para calcular o tamanho do bloco expandido, multiplique o número de membros (incluindo membros do Cálculo Dinâmico e membros de séries temporais dinâmicas) em cada dimensão densa em conjunto para o número de células no bloco e multiplique o número de células pelo tamanho de cada célula de membro, 8 bytes.

      Por exemplo, considere a contagem de membros em dimensões densas em Sample.Basic (membros Somente Rótulo não são contados):

      • 19 (Ano, com 12 membros armazenados e 7 membros Dynamic Calc, incluindo HTD e QTD)

      • 14 (Medidas, com 8 membros armazenados e 6 membros de Cálculo Dinâmico)

      • 4 (Cenário, com 2 membros armazenados e 2 membros de Cálculo Dinâmico)

      S = 19 * 14 * 4 células (8 bytes / célula) = 8512 bytes por bloco

      Esse número é mostrado no log do aplicativo como o tamanho do bloco lógico.

    • U é o número máximo de usuários simultâneos esperados no banco de dados que tem o maior número de usuários simultâneos.

      A atribuição do valor 0 (zero) a DYNCALCACHEMAXSIZE informa ao Essbase para não usar caches de calculadora dinâmica.

      Por padrão, o tamanho desse valor é de 20 MB (20.971.520 bytes).

  • DYNCALCCACHEWAITFORBLK: Se o Essbase usar toda a área alocada para um cache de calculadora dinâmica, essa definição informará ao Essbase se deve esperar até que o espaço fique disponível no cache ou para gravar e calcular imediatamente os blocos na memória fora do cache. Se o cache for muito pequeno, é possível que vários threads estejam na fila.

    Valor de configuração recomendado = FALSE (valor padrão).

    Antes de definir como TRUE, tente estas alternativas:

    • Adicionar memória física à máquina do servidor

    • Aumente o valor de DYNCALCCACHEMAXSIZE, teste e repita até verificar se não é possível usar mais memória para o cache da calculadora dinâmica.

  • DYNCALCCACHEBLKTIMEOUT: Se o Essbase for aguardar o espaço disponível no cache da calculadora dinâmica, essa definição definirá quanto tempo ele aguardará.

    Valor de configuração recomendado = WT / B.

    • WT é o tempo de espera máximo tolerável para uma consulta; por exemplo, 5 segundos.

    • B é o número total de blocos lógicos acessados na maior consulta.

      Para determinar o valor de B, verifique as mensagens no log do aplicativo para obter o maior número de Dyn.Calc.Cache "Big Block Allocs" para uma consulta.

  • DYNCALCCACHEBLKRELEASE: Se o Essbase tiver aguardado o tempo e o espaço especificados ainda não estiverem disponíveis no cache da calculadora dinâmica, essa configuração informará ao Essbase se deseja gravar e calcular os blocos imediatamente fora do cache da calculadora dinâmica ou criar espaço trocando blocos e compactando temporariamente os blocos trocados em um buffer.

    Valor de configuração recomendado = FALSE (valor padrão).

    Defina como TRUE somente se estiver enfrentando problemas graves de falta de memória.

  • DYNCALCCACHECOMPRBLKBUFSIZE: Se o Essbase tiver esperado o tempo de espera especificado e a definição DYNCALCCACHEBLKRELEASE for TRUE, essa definição será o tamanho do buffer de bloco compactado do cache da calculadora dinâmica.

    Valor de configuração recomendado = (C * S) / 2

    em que C é o valor do número máximo de blocos que o Essbase precisa corrigir (obter endereçamento para) ao calcular um bloco, e S é o tamanho do maior bloco expandido em todos os bancos de dados da máquina. Calcule C e S da mesma forma como descrito ou a configuração DYNCALCCACHEMAXSIZE.