Administrando o before-image

Escrito por Adriano Corrêa em 16 de fevereiro de 2009, 17:03h

Apesar da utilização do before-image não demandar qualquer configuração, diferente do after-image, normalmente encontramos problemas relacionados com seu desempenho ou com sua utilização de espaço.

O before-image tem por objetivo armazenar os blocos de banco de dados que sofreram alteração, guardando uma imagem de antes e de depois da transação. Esses blocos ficam armazenados em divisões lógicas conhecidas como clusters. Por padrão, um cluster de before-image tem 512 Kbytes de tamanho. Quando um cluster é cheio, o Progress inicia um processo chamado de checkpoint, onde as informações existentes no cluster são consistidas no banco de dados e o espaço desse cluster é liberado para utilização.

Cada transação que gera uma escrita no banco de dados gera duas escritas no before-image, mais a limpeza do espaço durante o checkpoint. Ou seja, o before-image exige 3 vezes o tempo de gravação do banco de dados. Por isso a monitoração e o tuning de gravações no before-image apresenta resultados mais expressivos que o tuning das gravações nas extensões de dados.

Além do desempenho, o before-image pode gerar problemas de espaço. Quando um programa entra em looping enviando gravações para o banco de dados, o before-image tem a tendência de aumentar até o estouro de 2 Gbytes, se o banco não está com o recurso Large Files ativo. Para evitar esse problema, o Progress disponibiliza dois parâmetros: -bithold e -bistall.

O parâmetro -bithold define um espaço em megabytes para o crescimento do before-image. Quando esse espaço é atingido, o Progress derruba o banco de dados para evitar maiores problemas. Se o parâmetro -bistall estiver definido, o banco congela ao invés de ser derrubado. Para liberar novamente a utilização do banco, deve ser executado o seguinte comando:

proquiet nome-do-banco -C bithreshold valor-maior-em-megabytes

Onde o valor-maior-em-megabytes representa um espaço maior que a definição anterior o -bithold. Esse comando poderá ser executado quantas vezes for necessário, sempre que o banco entrar em quiet pelo -bistall. O ideal é que se aumente uma vez para desconectar o usuário que está gerando a transação em looping. Isso é possível de identificar pelo promon - opção 3: BI Writes.

O desempenho do before-image pode ser monitorado pela opção 5 (Activity) do promon. Como referência, utilize o manual Database Administration Guide and Reference.

 

Categorias: Banco de dados | Desempenho | Internals | Progress

Tags: , , , ,

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading