O indicador Scatter Factor

Escrito por Adriano Corrêa em 16 de fevereiro de 2011, 10:07h

No post Como não se deve otimizar o desempenho de um banco de dados Progress, foi questionado quanto ao indicador Scatter Factor existente no processo de dbanalys/tabanalys.

O scatter factor é um indicador da "qualidade" da leitura sequencial. Ele mede o fator de distanciamento de registros de uma mesma tabela.

Esse distanciamento costuma ser alto em registros localizados em storage area tipo I. Isso porque blocos são compartilhados com várias tabelas e os registros vão se colocando nos espaços disponíveis sequencialmente. O problema é que o sequencial para o banco não é necessariamente sequencial para a tabela.

Em storage area tipo II, os registros se colocarão sequencialmente para a tabela, dentro do espaço de até 512 blocos contíguos, o que reduzirá consideravelmente esse scatter factor. Quando maior o número do “cluster” de blocos, melhor o agrupamento de registros.

Lembro que a storage area tipo II não vai eliminar o distanciamento. Existem outros fatores que prejudicam a leitura sequencial:

  • Se existir outra tabela dentro da storage area, haverá "pulos" de 512 blocos;
  • Todo bloco mantém um espaço vazio destinado a alteração de registro no mesmo bloco, o que evita a fragmentação, chamado de Toss Create Limit;
  • Apesar dos registros serem sequenciais, as leituras podem não ser. Ler um registro demanda um índice, que se não estiver na mesma ordem de criação, poderá apontar para blocos diferentes.

Resumindo, não compensa fazer dump-load por causa do scatter factor. Compensa sim, fazer um tablemove para uma storage area tipo II.

Categorias: Banco de dados | Desempenho | Progress

Tags: , , ,

Comentários (4) -

em 5 de maio de 2011, 14:20h

Olá Adriano.

Estou analisando uma possível manutenção em nosso servidor de banco de dados.
Por causa do indicador Scatter Factor, comecei a verificar o TABLEMOVE.
Pelo o que eu entendi, vocês recomendam realizar um tablemove para storage area tipo II. Mas e se essas tabelas já estiverem em um schema area do tipo II? É o meu caso aqui na empresa.
Vi em outro post seu que, em geral, se a tabela não for muito grande, não vê necessidade de movê-la.
Tenho 3 tabelas, uma com 4Gb, outra com 10 e outra com 15Gb de tamanho, que estão em um schema area tipo II, onde o indicador scatter factor está maior que 5.
A minha idéia é realizar um tablemove desta tabelas para um novo schema area do tipo II.
Isso funcionaria? É que não sei dizer o que acontecerá com o schema area antigo e se eu vou poder deletá-lo, e se o servidor pode ter algum problema caso o area_number do arquivo .st não tenha uma ordem.

Bom, é isso aí Adriano, vou continuar as minhas pesquisas aqui, se puder ajudar, te agradeço desde já.

Leandro Santana.

Leandro

em 5 de maio de 2011, 16:50h

Leandro, se a storage area do tipo II conter mais de um objeto (tabela ou índice) o scatter factor será grande mesmo.
Porém esse indicador para a storage area tipo II é obsoleto. Se você criou o cluster de 512, colocar a tabela em uma área exclusiva dela não compensará a administração.

Adriano.

adriano

em 6 de maio de 2011, 14:35h

Adriano,

Obrigado pela resposta.
Eu só tenho um objeto em cada um dos schema areas citados, são somente tabelas, e não sei dizer se o cluster é de 512.
Mas agora eu fiquei um pouco confuso. Você falou que o scatter factor para schemas areas do tipo II são obsoletos? Você está querendo dizer que não posso levar ele em consideração nesse meu caso? E como vou poder fazer a análise da fragmentação dos dados? Eu sempre utilizei o tabanalys, e este campo sempre foi o principal a ser analisado. Como vou fazer agora a análise? Sempre usei este parâmetro como base.
Agradeço a atenção.

Leandro

em 9 de maio de 2011, 09:00h

O campo correto para verificar a fragmentação dos dados é o fragment factor. Esse indicador mostra a quantidade de partes de registro existentes na tabela. O ideal é ter uma parte de registro para cada registro, que corresponde ao valor 1.0. Se chegar a 1.5, por exemplo, a cada 2 registros existem 3 partes.

adriano

Comentar

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

Acesso LogMeIn

Informe o código PIN: