No Oracle Database, uma estratégia de gerenciamento de dados comum e eficaz é a separação de tabelas e índices em tablespaces distintas. Este artigo explica como criar uma tabela e alocá-la em uma tablespace específica, além de alocar o índice da chave primária em outra tablespace diferente.
A alocação de objetos de dados em tablespaces específicas pode trazer benefícios notáveis, como a otimização do desempenho do banco de dados, a eficiência na recuperação de dados e o gerenciamento simplificado de espaço em disco.
Passo 1: Criando Tablespaces
Antes de criar uma tabela e seu índice, vamos criar duas tablespaces: uma para a tabela e outra para o índice.
CREATE TABLESPACE tablespace_tabela
DATAFILE 'localização_do_arquivo'
SIZE 100M AUTOEXTEND ON;
CREATE TABLESPACE tablespace_indice
DATAFILE 'localização_do_arquivo'
SIZE 50M AUTOEXTEND ON;
Substitua ‘localização_do_arquivo’ pelo caminho onde você deseja armazenar o arquivo de dados.
Passo 2: Criando a Tabela
Agora, vamos criar uma tabela na tablespace tablespace_tabela
.
CREATE TABLE minha_tabela
(
id NUMBER,
nome VARCHAR2(50)
) TABLESPACE tablespace_tabela;
Esta tabela tem uma coluna de id e uma coluna de nome.
Passo 3: Criando a Chave Primária e o Índice Associado
Agora, vamos criar a chave primária e o índice associado na tablespace tablespace_indice
.
ALTER TABLE minha_tabela
ADD CONSTRAINT minha_tabela_pk
PRIMARY KEY (id)
USING INDEX
TABLESPACE tablespace_indice;
Este comando adiciona uma restrição de chave primária à coluna ‘id’ e cria um índice associado a essa chave primária na tablespace tablespace_indice
.
No Oracle, quando definimos uma coluna como chave primária durante a criação da tabela, o banco de dados automaticamente cria um índice associado a essa chave. Esse índice é criado na mesma tablespace que a tabela. No entanto, o nosso objetivo neste artigo é mostrar como colocar a tabela e o índice associado à chave primária em tablespaces diferentes.
Portanto, optamos por criar a tabela sem a chave primária inicialmente. Após a criação da tabela, adicionamos a chave primária com a cláusula USING INDEX TABLESPACE
, o que nos permite especificar uma tablespace diferente para o índice.
Essa prática oferece flexibilidade e controle sobre a alocação de espaço para tabelas e índices. Além disso, pode melhorar o desempenho do banco de dados, pois permite a leitura simultânea de dados da tabela e do índice a partir de diferentes locais físicos de armazenamento.
Benefícios da Separação de Tabelas e Índices em Tablespaces Diferentes
A principal razão para alocar tabelas e índices em tablespaces separadas é o desempenho. Quando uma operação de consulta é realizada, o Oracle pode ler dados de índices e tabelas simultaneamente. Se os índices e as tabelas estiverem no mesmo disco e a leitura ocorrer simultaneamente, o cabeçote de leitura do disco terá que se mover entre a localização da tabela e a localização do índice, resultando em uma latência de leitura maior. Ao separar índices e tabelas em diferentes tablespaces (e consequentemente, em diferentes discos), essa latência pode ser minimizada, resultando em um melhor desempenho de leitura.