PARÂMETROS DE ARMAZENAMENTO

 

Os blocos de dados formam as estruturas lógicas de menor nível em um Banco de Dados. Um bloco de dados corresponde a um número especifico de bytes guardados fisicamente em disco.

Os parâmetros PCTFREE e PCTUSED permitem aos administradores controlarem o uso do espaço livre para novas inserções de informações e atualizações nas linhas existentes nos blocos de dados, sendo que o parâmetro PCTFREE também é utilizado para especificar como os blocos de dados são usados nos índices, no momento da criação dessas estruturas.

O parâmetro PCTFREE especifica a percentagem de um bloco que será reservada para possíveis atualizações de linhas que já existem no bloco. P.ex., o parâmetro PCTFREE se especificado como 20% no comando CREATE TABLE, faz com que cada bloco de dado usado para armazenar as linhas da tabela criada possua 20% de seu espaço reservado para atualizações das linhas já existentes. Portanto, somente 80% dos blocos usados para armazenar as linhas dessa tabela estão disponíveis para novas inserções de informações.

Depois que um bloco torna-se preenchido por dados, de acordo com o especificado pelo parâmetro PCTFREE, o bloco não é considerado para novas inserções de linhas até que a percentagem de uso desse bloco torne-se menor que o parâmetro PCTUSED.

Até que o percentual especificado por PCTUSED seja atingido, através da remoção ou atualização das linhas do bloco de dados, o espaço disponível somente pode ser usado para atualizações das linhas já existentes. A partir do momento que o limite especificado pelo parâmetro PCTUSED for atingido, o bloco será candidato a receber novas linhas inseridas.

Os parâmetros PCTFREE e PCTUSED trabalham conjuntamente para otimizar a utilização do espaço nos blocos de dados das extensões de um segemento de dados

 

Ex.: Bloco de Dados com PCTFREE(10%) e PCTUSED(40%) 

CREATE TABLE bancos(
bco_cod                 NUMBER(4,0) NOT NULL,
bco_raz_soc          VARCHAR2(40) NOT NULL,
bco_vlr_lim_cre      NUMBER(19,2) NOT NULL,
bco_imd_cod         VARCHAR2(6) NOT NULL,
bco_mun_cod         NUMBER(5,0) NOT NULL,
bco_nom_fan         VARCHAR2(20) NULL,
bco_fon                  VARCHAR2(8) NULL,
bco_vlr_lim_uti         NUMBER(19,2) NULL
)
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
TABLESPACE TSDGEF0D
      STORAGE (
      INITIAL 32768
      NEXT 32768
      MINEXTENTS 1
      MAXEXTENTS 121
      PCTINCREASE 0
)
;

· As linhas são inseridas até que atinjam 90% do espaço do bloco;

· As atualizações das linhas existentes podem usar o espaço livre de 10%   reservado no bloco. Nenhuma linha pode ser inserida;

· Devido à remoção ou atualizações de linhas, quando o percentual atingido for menor que 40%, novas linhas podem ser inseridas no bloco de dados.

Da mesma forma que o Oracle prealoca espaço contíguo em disco para os tablespaces, usando arquivos de dados, ele prealoca espaço contíguo dentro dos arquivos de dados de um tablespace para tabelas e índices, usando extensões. Uma extensão (extent) nada mais é do que o número de blocos de dados contíguos que o Oracle aloca para um objeto, quando é necessário mais espaço para os dados do objeto. O grupo de todas as extensões de um objeto é chamado de um segmento.

Quando o administrador cria uma tabela ou um índice, o Oracle aloca uma ou mais extensões para armazenar os dados iniciais do objeto. A medida que o usuário insere dados no objeto, o Oracle aloca automaticamente extensões adicionais, conforme a necessidade, para armazenar os dados que não couberem no conjunto atual de extensões definidas para o objeto.

Existem diversos parâmetros de armazenamento que permitem ao administrador controlar o modo como o Oracle aloca extensões reduzindo a fragmentação de dados e aumentando o desempenho em relação ao I/O de disco. São eles:

INITIAL determina o tamanho, em bytes, da extensão inicial de um objeto. O parâmetro INITIAL serve para prealocar todo ou grande parte do espaço que se supõe que o objeto exigirá. Dessa forma todos os dados do objeto, ou grande parte deles, residirão em conjunto contíguo de blocos de dados.

NEXT determina o tamanho, em bytes, da próxima extensão que o Oracle alocará, se necessário, para o objeto. O valor de next pode aumentar, dependendo do valor de PCTINCREASE.

MINEXTENTS determina a quantidade de extensões a prealocar ao criar uma tabela ou índice. P.ex., se o administrador criar uma tabela e especificar MINEXTENTS como 2, o Oracle alocará imediatamente duas extensões para a tabela.

MAXEXTENTS determina o número máximo de extensões que o Oracle pode alocar para uma tabela ou índice. O administraodr usa MAXEXTENTS para controlar efetivamente o tamanho máximo de um objeto. Existe também um tamanho máximo de acordo com o Sistema Operacional.

PCTINCREASE determina o fator de crescimento à medida que o Oracle aloca novas extensões para uma tabela ou índice. P.ex., se o administrador definir o parâmetro NEXT de uma tabela com 200K e o paraâmetro PCTINCREASE com 50, a segunda extensão será de 200K, a terceira, de 300K, a quarta, de 450K, e assim por diante. O administrador deve usar PCTINCREASE para aumentar o tamanho das extensões subsequentes e tentar reduzir a fragmentação de dados do objeto.

À medida que uma transação manipula dados de um objeto, o Oracle precisa alocar pequenas quantidades de espaço nos blocos de dados correspondentes do objeto, para armazenar as informações do processamento interno até que a transação seja confirmada ou desfeita. Os parâmetros INITRANS e MAXTRANS permitem ajustar o desempenho em relação a esse mecanismo de processamento interno a favor dessa transações.

INITRANS prealoca espaço para um número especificado de entradas de transações em cada bloco de dados de um objeto. Assim o Oracle não precisa alocar espaço dinamicamente para as entradas de transações quando as mesmas entrarem nos blocos de dados. O valor default é 1.

MAXTRANS Limita o número de transações que podem entrar paralelamente em um bloco de dados e, consequentemente, a quantidade de espaço que as entradas de transações podem consumir em um bloco em determinado momento. Se o número de transações de MAXTRANS estiver usando um bloco simultaneamente, a próxima transação a solicitar informações do bloco precisa esperar até que a outra transação usando o bloco seja efetivada ou desfeita.

 

Retorna a página anterior.

 

* http://saudino.home.ml.org
   gsf@mandic.com.br