Vamos ver dois exemplos de inserção.

Exemplo 1 - Suponha que desejamos inserir um registro de nome “André Peixoto”. Como o SGBD irá processar essa operação? De maneira bem simples, irá localizar o espaço disponível no fim do primeiro bloco e lá cadastrar esse registro. Observe agora que o primeiro bloco ficaria totalmente ocupado, sem espaços disponíveis.

Exemplo 2 - E se agora outro registro de nome “André Xavier” fosse inserido? Como o SGBD iria se comportar? Preste atenção no passo a passo abaixo, pois o SGBD iria alocar um novo bloco para incluir esse funcionário:

  1. Ao tentar inserir o “André Xavier”, o SGBD iria localizar na tabela de índices qual é o bloco para o nome “André”, identificando ser o bloco 1.
  2. Ao varrer o bloco 1, o SGBD iria perceber que não há espaço disponível para esse bloco.
  3. Então o SGBD iria alocar outro bloco dentro do arquivo (provavelmente aumentando o tamanho físico do arquivo).
  4. Após criar o novo bloco, o SGBD irá criar um ponteiro no final do bloco 1 apontando para esse novo bloco.
  5. Depois irá inserir o “André Xavier” nesse novo bloco.

Observe que o SGBD cria ponteiros que direcionam o final de um bloco para o início do outro bloco a fim de prover mais espaço de armazenamento. Dessa forma, o resultado final serial algo como:

Bloco físico do
disco
Nome Sobrenome Demais campos
da tabela...
1
André Costa ...
André Barros Leite ...
André Matias Lemos ...
André Peixoto ...
Ponteiro: Continua no bloco 50.
2
Bernardo Felix Coelho ...
(espaço disponível)
(espaço disponível)
(espaço disponível)
3
Caio Ferreira Leite ...
Caio Gomes da Costa ...
(espaço disponível)
(espaço disponível)
4
Daniel Matos Lemos ...
Daniel Costa ...
...
...
Demais blocos... ... ... ...
50
André Xavier ...
(espaço disponível)
(espaço disponível)
(espaço disponível)

Tabela após a inserção de um novo bloco e de dois registros, destacados em amarelo.
Copyright © 2016 AIEC.