Banco de dados oracle (indices)

Disponível somente no TrabalhosFeitos
  • Páginas : 11 (2549 palavras )
  • Download(s) : 0
  • Publicado : 17 de maio de 2011
Ler documento completo
Amostra do texto
1º Trabalho de CSGBD

Assunto: índices no Oracle

Grupo: Fábio C. Barros – 9714257
Thiago C. Figueiró – 9615271


Índice

1. Introdução
1.1. Organização lógica dos dados
1.2. Tabelas particionadas
1.3. ROWID
1.4. Índices
1.5. Clusters
2. Classificação de Índices
2.1. Lógica
2.1.1. Única coluna ou concatenado
2.1.2. Exclusivo ou não-exclusivo
2.1.3. Baseado em função
2.2.Física
2.2.1. Particionado ou não-particionado
2.2.2. Chave normal ou de inversão
2.2.3. Em árvore binária
2.2.4. Bitmap
3. Armazenamento de índices
3.1. Árvore B*
3.2. Bitmap
4. Índice de cluster
5. Bibliografia utilizada


1. Introdução

Antes de entrarmos no assunto do trabalho propriamente dito, explicaremos alguns conceitos necessários para o melhor entendimento do texto.1.1 Organização lógica dos dados

O nível mais baixo de dados no Oracle é o data block, que é composto de um número específico de bytes, escolhido quando da criação do banco.

Acima dos data blocks temos os extents. Extents são conjuntos contínuos de data blocks.

Em seguida, temos os segments. Estes são um conjunto de extents, e são utilizados para armazenar um tipo específico deinformação (eg.: dados, índices, rollback). Como os extents são alocados para um segment dinamicamente, os extents de um segment podem não estar contínuos no disco.

Um banco de dados Oracle é dividido em unidades lógicas de armazenamento chamadas tablespaces. Geralmente coloca-se em um mesmo tablespace estruturas relacionadas para facilitar a gerência das mesmas. Um tablespace é formado de um oumais datafile, que por sua vez é organizado como descrito nos parágrafos acima: em datablocks, extents e segments.

O diagrama na página seguinte ilustra a explicação:



1.2 Tabelas particionadas

Tabelas particionadas são usadas para aumentar a escabilidade de uma aplicação, permitindo distribuir os dados da tabela em mais de uma partição, que por sua vez constitui um segment e podeestar em outro tablespace. A distribuição dos dados pelas partições é feita através de faixas de dados, hashing ou composição.

1.3 ROWID

O ROWID é um identificador exclusivo de uma linha (row) e pode ser utilizado para encontrar o endereço físico da sua respectiva linha.

O ROWID é composto de:

- número de objeto de dados
- número de arquivo relativo
- número de bloco
- número delinha

totalizando 10 bytes. O “número de objeto de dados” é um identificador único dentro de um banco, sendo atribuído para cada objeto dentro do mesmo, como uma tabela ou um índice. O “número de arquivo relativo” é exclusivo para cada arquivo de um tablespace. O “número de bloco” representa a posição do bloco que contém a linha, dentro do arquivo. O “número de linha” identifica, nocabeçalho do bloco, a posição do slot de diretório de linha.

Existe uma notação mais simples do ROWID, chamada de ROWID Restrito, que não contém o número de objeto de dados e é usado quando se quer localizar uma linha dentro de um único segmento.

1.4 Índices

Um índice é uma estrutura de árvore que permite acesso direto a uma linha de uma tabela; são estruturas opcionais associadas a tabelas eclusters que fornecem um caminho de acesso mais rápido aos dados. Em se tratando de memória secundária (discos rígidos), os índices são os principais meios para diminuir o seu acesso, quando utilizados corretamente, é claro.

Um índice é logicamente e fisicamente independente dos dados da tabela associada a ele. Isso significa que você pode criar e remover índices a qualquer momentos, sem queisso afete a consistência dos dados do banco. É claro que o acesso a dados que antes estavam indexados vai passar a ser mais lento, mas por outro lado você vai ter liberado algum espaço em disco.

Uma vez criado o índice, o Oracle se encarrega de mantê-lo atualizado automaticamente, refletindo mudaças feitas por inclusões, deleções ou alterações nos dados.

1.5 Clusters

Clusters são um...
tracking img