Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Detalhamento do tamanho limite de chave de índice



Composition Setup
import.css=/download/attachments/327912/newLayout.css

ADS Error (7022) - Operação: Maximum index ...

Esta ocorrência indica um estouro do limite de balanceamento do índice atualmente utilizado pela tabela , através do driver ADS, ocorrido durante a operação . Esta ocorrência apresenta-se no log do console do Servidor de Aplicação, precedendo em geral uma ocorrência fatal do AdvPL, em geral relacionada às funções DBAppend(), DBRUnlock() e/ou

DBSkip().

ADS

Error

(7022)

-

Operacao:

<x>

-

Maximum

index

levels

exceeded.

File:

<y>

Causa

Esta ocorrência

geralmente

é reproduzida

,

quando da utilização de uma tabela indexada, onde

o resultado da

foi usada uma expressão de indexação cujo resultado da chave ( &(Indexkey()) ) ultrapasse 140

bytes, durante e/ou após sucessivas operações de inserção de registros.No caso da reprodução desta ocorrência, reindexar a tabela (deletar e recriar o índice) torna a aplicação operacional novamente, porém após sucessivas inserções e alterações na tabela, a ocorrência provavelmente será reproduzida novamente. Verifique as chaves de índice utilizadas para a tabela e evite que seja utilizada uma chave cujo retorno da expressão de indexação ultrapasse 140 bytes

carascteres, onde houve uma sequencia grande de inserções consecutivas.

Correção

  • Verifique as chaves de índice utilizadas para a tabela, e garanta que nenhuma chave seja maior que 140 caracteres. O tamanho da coluna é um fator que interfere diretamente na reprodução da ocorrência, na proporção direta do tamanho da chave de índice. Quando menor a chave, menor a chance deste erro não acontecer. Em testes feitos com um programa de stress realizando inserções de 20 mil chaves aleatórias, reduzir para 140 bytes não mais reproduziu a ocorrência, porém este limite é arbitrário, nada impede que uma determinada sequência de muitas inserções usando uma chave de tamanho menor também possa reproduzir o estouro no índice.
  • Caso não seja possível reduzir a chave do índice, verifique se é possível criar o índice após os dados já estarem inseridos na tabela.
  • Ou, troque a RDD de acesso a tabela. Ao invés de cria a tabela usando driver ADS ( DBFCDX com ADS Local ou DBFCDXADS ), use o driver CTREECDX, onde os índices não têm esta limitação de balanceamento com chaves maiores que 140 bytes.
  • Caso nenhuma das alternativas anteriores seja viável, o programa pode ser alterado para, preventivamente, recriar o índice a cada X mil registros inseridos. Este número X deve ser estabelecido como um limite preventivo, para fechar, deletar e recriar o índice, por exemplo a cada 5 mil registros inseridos. Dependendo do tamanho da chave do índice ou da sequência de dados inseridos, este número pode ser menor, e deve ser determinado empiricamente.
Portuguese



Ocorrência

Esta ocorrência indica um estouro do limite de balanceamento do índice atualmente utilizado em uma tabela, reproduzido quando utilizado o driver ADS. Esta ocorrência apresenta-se no log do console do Servidor de Aplicação, precedendo uma ocorrência fatal do AdvPL, normalmente relacionada às funções DBAppend(), DBRUnlock() e/ou

Pagetitle
ADS Error 7022 - Operação Maximum index ...ADS Error 7022 - Operação Maximum index ...