Desempenho X Segurança (parte final)

Escrito por Adriano Corrêa em 19 de setembro de 2008, 08:20h

Nesse último post da série de desempenho X segurança, vamos estudar estrutura do banco de dados.

A partir da versão 9, bancos de dados Progress podem conter divisões lógicas chamadas de Áreas e, a partir dessa, divisões físicas chamado de extents. Dessa forma, é possível separar tabelas mais utilizadas em outra área, evitando fragmentação e distanciamento de registros além de poder colocar essas tabelas em discos diferentes do servidor.

A partir do Progress 10, essa tecnologia de área de armazenamento ganhou a segunda versão (tipo II), criando o conceito de cluster de área. Com a utilização de cluster, cada tabela ou índice da área recebe um espaço contíguo de armazenamento, de 8, 64 ou 512 blocos de banco.

Essa estrutura, além de agilizar leituras seqüenciais de registros, ainda evita que o mesmo bloco receba informações de tabelas diferentes. O ganho de desempenho com essa utilização é gigantesco.

Quando se utiliza apenas a área do meta-schema do banco (Schema Area), um mesmo bloco pode receber registros de até 64 tabelas diferentes. Logo, se um processo precisa ler 50 registros seqüenciais da mesma tabela, o banco demandará a leitura de até 50 blocos de banco, se o registro não contiver mais de um fragmento.

Quando a tabela estiver em uma área dedicada para ela, ou em uma área do tipo II, os 64 registros do bloco serão da mesma tabela. Desse modo, o processo que precisa ler os 50 registros trabalhará no mesmo bloco. A conta é simples:

  Quantidade de blocos lidos X Tamanho do bloco = Bytes lidos do disco

ASA I:

50

X

8.192

=

409.600

ASA II:

1

X

8.192

=

8.192

A demanda de leituras de disco e buffers disponíveis é significativamente inferior, fazendo apenas essa alteração.

A segunda análise é do tamanho do registro da tabela. Uma área pode ter de 1 a 256 registros por bloco. Se o registro for pequeno, pode-se configurar a área para que com apenas um bloco lido, 256 registros sejam alocados em memória. Da mesma forma, se um registro for grande, ele pode ser alocado em uma área com 1 registro por bloco para economizar espaço de offsets no cabeçalho do bloco, aumentando o espaço de dados e conseqüentemente reduzindo fragmentação.

Existem várias possibilidades de organização, que devem ser analisadas conforme a utilização de cada banco de dados. O retorno em desempenho poderá variar de estrutura para estrutura. O caso mais expressivo que que conseguimos implementar através da consultoria telefônica foi a redução de 35% no tempo da execução do cálculo do preço médio.

Categorias: Banco de dados | Desempenho | Internals

Tags: , , ,

Comentar

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

Acesso LogMeIn

Informe o código PIN: