Ajuste de desempenho para o processamento paralelo

Este apêndice descreve o ajuste de desempenho que pode ser necessário para executar a sessão Processo CI (tccri7203m000) usando o processamento paralelo.

O desempenho real de Processo CI (tccri7203m000) depende de diversos fatores, incluindo o número de CPUs disponíveis e a configuração dos servidores de aplicativo e banco de dados. O valor dos dados contidos nas tabelas é outro fator importante. Em geral, as tabelas a seguir contêm grandes quantidades de dados:

  • Transações de integração (tfgld482)
  • Dados de reconciliação (tfgld495).
  • Transações finalizadas (tfgld106)
  • Transações de estoque e WIP produção (JSC) (ticst300)
  • Transações de PCS WIP e estoque (tipcs300)
  • Histórico de ordens de venda (tdsls450, tdsls451 e tdsls456)

No LN e FP5 posteriores, há um recurso disponível para atualizar as tabelas diretamente por meio do RDBMS. Esse recurso é implementado nos conjuntos de portabilidade 8.7a.03 e posteriores.

As atualizações diretamente por meio do RDBMS são mais eficientes que as atualizações por meio do bshell. A diferença é que toda a transação é passada para o RDBMS. Esse tipo de atualização é limitado às tabelas ou aos dados que não necessitam de recálculo de valores locais e/ou taxas de câmbio. Esse pode ser o caso se, por exemplo, os valores locais de uma moeda de relatório se tornam os valores em moeda local. A remoção de valores locais pode ser outro exemplo disso. Esse pode ser o caso se as moedas de relatório forem excluídas, ou em tabelas logísticas, se o sistema monetário mudar para um sistema monetário padrão.

A sessão Processo CI (tccri7203m000) verificará se é possível aplicar atualizações diretamente do RDBMS. Essa sessão usará as atualizações convencionais (mais lentas) caso a atualização diretamente pelo RDBMS não seja permitida.

A possibilidade de usar as atualizações pelo RDBMS é determinada pelo seguinte:

  • Na sessão Taxas CI (tccri7100m000), o valor do campo Expresso em moeda-base deve corresponder ao valor do campo correspondente na sessão Taxas monetárias (tcmcs0108m000). Por exemplo, em companhias do EURO, as taxas de câmbio do EUR (local) para as moedas da transação podem permanecer se a configuração de Expresso em moeda-base não é alterada durante a conversão.

    Nota: Isso se aplica a todos os tipos de taxa de todas as moedas base na sessão Taxas monetárias (tcmcs0108m000).

  • Limitações técnicas

    Estas restrições se aplicam:

    • O driver do banco de dados deve ser um driver nível 2.
    • As tabelas a seguir não são auditadas nem espelhadas:

      tfgld495, tfgld482, tdsls451 e tdsls456

  • É obrigatório usar a versão 8.7a.03 ou posterior do conjunto de portabilidade. O nível de TIV do conjunto de portabilidade deve ser 1744 ou posterior. É possível verificar esse número executando $BSE/bin/bshell6.2 –V na linha de comando (no Windows, use %BSE\bin\ntbshell –V)

Se o processo de inicialização da moeda for iniciado na sessão Processo CI (tccri7203m000), essa sessão acessará o agrupamento de conversão e as companhias pertinentes e determinará o tipo de conversão necessário. Caso seja necessário aplicar atualizações diretamente por meio do RDBMS, alguns dados serão gerados nas tabelas chamadas Tabelas de conversão de CI por companhias de agrupamento (tccri725) e Grupos de atualização das tabelas de conversão de agrupamento de CI (tccri726).

Nota

Os Grupos de atualização das tabelas de conversão de agrupamento de CI (tccri726) são gerados somente para as entradas de transação de integração (tfgld482) na sessão Conversão de tabelas CI por companhia de agrupamento (tccri7125m000).

Na sessão Conversão de tabelas CI por companhia de agrupamento (tccri7125m000), o campo Atualizações em massa será selecionado se o Processo CI (tccri7203m000) for atualizar uma tabela diretamente por meio de atualizações do RDBMS.

A tabela Transações de integração (tfgld482) pode conter transações que pertencem a várias companhias financeiras. As transações de integração que podem ser tratadas com atualizações diretamente por meio do RDBMS serão agrupadas em grupos de atualização. As transações em um grupo de atualização podem ser convertidas em uma atualização pelo RDBMS. A conversão de tabelas poderá ser dividida mesmo se as Transações de integração (tfgld482) devem ser convertidas sem atualizações diretamente pelo RDBMS (também). Dessa forma, a atualização convencional da tabela será processada usando processos paralelos.

Os Dados de reconciliação (tfgld495) deverão ser divididos somente se não for possível aplicar as atualizações diretamente pelo RDBMS. Esse será o caso se, por exemplo, for necessário recalcular os valores locais ou as taxas de câmbio.

Nota
  • Se a conversão dos Dados de reconciliação (tfgld495) for dividida, a tabela não será atualizada com as atualizações diretamente pelo RDBMS.
  • A tabela Transações finalizadas (tfgld106) podem ser convertidas usando processos paralelos. Não há suporte para as atualizações diretamente pelo RDBMS.

Exemplo de ajuste

Esse exemplo se aplica às tarefas de conversão que são tratadas sem atualizações diretamente pelo RDBMS e podem ser divididas em Conversão de tabelas CI por companhia de agrupamento (tccri7125m000).

Uma conversão interna com processamento paralelo pode envolver conversões com e sem atualizações diretamente por meio do RDBMS, dependendo da configuração de moeda por companhia.

Suponha que os dados de três companhias devem ser convertidos usando nove bshells paralelos. A figura mostra essa situação com cores diferentes para as três companhias.

A tabela convertida na tarefa 1.1 é muito grande. Ao mesmo tempo, três outras tabelas grandes também são convertidas (2.1, 2.2 e 3.1). Se a tarefa de conversão de grande porte 1.1 puder ser dividida, será possível optar por ter seis bshells processando a tarefa 1.1, ao passo que três bshells processarão as tarefas 2.1, 2.2 e 3.1. Depois de dividir a tarefa 1.1, as seis tarefas maiores que processam essa tarefa serão tratadas antes das tarefas menores (de cor roxa).

A mesma abordagem poderá ser usada se, por exemplo, a conversão das tabelas 2.3 e 2.4 puder ser dividida. Se a tabela 2.3 for processada por dois bshells em paralelo, e a 2.4 for processada por três bshells em paralelo, ainda restará capacidade suficiente para que os bshells paralelos restantes processem as tarefas menores (de cor verde) ao mesmo tempo.

Após a divisão das tarefas, a carga dos processos paralelos ficará mais equilibrada.

O tempo total transcorrido foi reduzido de 28 para 17 unidades de tempo.

Processo CI (tccri7203m000): conversão de teste vs conversão real

No modo de simulação, as transações de banco de dados das atualizações diretamente pelo RDBMS serão testadas. Esse tipo de atualização pode ser usado dentro da conversão de Dados de reconciliação (tfgld495), Transações de integração (tfgld482), Linhas de histórico de ordens de venda (tdsls451) e Linhas de entrega de histórico de ordens de venda (tdsls456). As transações serão retrocedidas no modo de teste. Isso pode tomar muito mais tempo do que a transação real em uma conversão real.

Na lógica de conversão convencional, a atualização dos dados da tabela não é realizada durante a conversão de teste. Observe que, embora essas tabelas sejam processadas em menos tempo durante a conversão de teste, seu processamento na conversão levará mais tempo.
Nota

Durante a inicialização de moeda, nenhum outro usuário ou processo poderá estar ativo nas companhias do agrupamento de conversão, mesmo se a sessão Processo (tccri7203m000) for usada para realizar uma conversão de teste.

Para evitar problemas de bloqueios de tabela ou leitura de transações não confirmadas, tenha em mente o seguinte:
  • As atualizações diretamente por meio do RDBMS serão transações grandes que são testadas, mas não confirmadas, durante a conversão de teste. Isso pode provocar bloqueios de tabela em Dados de reconciliação (tfgld495), Transações de integração (tfgld482), Linhas de histórico de ordens de venda (tdsls451) e Linhas de entrega de histórico de ordens de venda (tdsls456).
  • Servidor SQL: Por padrão, o driver de banco de dados usa o nível de isolamento "Ler não confirmado" para evitar bloqueios compartilhados e o bloqueio exclusivo para as ações de atualização e exclusão. Consequentemente, durante a conversão, outros usuários ou processos podem ler transações não confirmadas em Dados de reconciliação (tfgld495), Transações de integração (tfgld482), Linhas de histórico de ordens de venda (tdsls451) e Linhas de entrega de histórico de ordens de venda (tdsls456). Para obter mais informações, consulte Guia de referência técnica do Infor Enterprise Server para o driver de banco de dados do SQL (U8173US PB).

Definições do Oracle

As atualizações diretamente pelo RDBMS serão transações de grande porte. Consequentemente, será necessário muito espaço de tabela para desfazer. O LN é testado com um espaço de tabela para desfazer de 32 GB. Recomendamos a configuração do espaço de tabela para desfazer para ampliar os arquivos de dados automaticamente com, por exemplo, 8 GB por vez. Isso evita a ocorrência de erros ORA-1555 (instantâneo antigo demais). Tenha em mente o tamanho máximo do arquivo de dados.

Não é fácil prever se o tamanho do espaço de tabela para desfazer será suficiente. Recomendamos que você procure erros ORA-1555 nos logs do visualizador de eventos do LN quando Processo CI (tccri7203m000) está em execução.

Em geral, para que as consultas tenham um bom desempenho, o banco de dados Oracle requer um ajuste adequado.

O LN foi testado com as seguintes configurações aplicadas ao ambiente do LN por meio do arquivo $BSE/lib/default/db_resource:

  • ora_init:0101000
  • ora_max_array_fetch:100
  • ora_max_array_insert:100
  • ora_alter_session: set " _optim_peek_user_binds "= false

Você deve considerar a possibilidade de mesclar as linhas acima com o recurso de banco de dados baseado em lote para conversão.

Em algumas implementações, são aplicados valores não padrão a parâmetros ocultos do Oracle (conhecidos como parâmetros com sublinhado). Essas definições podem influenciar os planos de execução das consultas. Considere a possibilidade de restabelecer os padrões dessas definições. Isso pode ser feito adicionando-as à propriedade ora_alter_session no arquivo $BSE//lib/defaults/db_resource.

Configurações do Servidor SQL

Considere a possibilidade de alterar o registro no banco de dados do LN durante a inicialização da moeda para Simples e criar um backup completo depois de concluir a inicialização da moeda.

Configure o arquivo $BSE/lib/default/db_resource para ativar a busca na matriz e, em seguida, defina o tamanho da busca como 100.

Configurações do DB2

Configure o arquivo $BSE/lib/default/db_resource para ativar a busca na matriz e, em seguida, defina o tamanho da busca como 100.