Pular para o conteúdo

Como Otimizar Tabelas no Oracle Database Marcando Colunas Como Unused

Otimizando Tabelas no Oracle Database: Marcando Colunas Como Unused

Você já viu alguém fazendo a coisa certa mas na hora errada?

Quando lidamos com um banco de dados em crescimento, especialmente um Oracle Database, a limpeza e otimização das tabelas são pontos-chave para manter a performance em dia. Mas o que fazer quando precisamos “remover” uma coluna sem necessariamente mexer na estrutura da tabela, nem consumir muito tempo de processamento?

Aqui entra uma função extremamente útil: a possibilidade de marcar colunas como ‘unused’. Este recurso permite indicar que uma coluna não será mais utilizada, sem realmente excluir os dados de imediato. Vamos entender melhor.

Imagine uma prateleira de escritório cheia de arquivos (nossa tabela) onde alguns deles estão desatualizados e ocupando espaço. Você decide ‘etiquetar’ esses arquivos como “não utilizados”, sem removê-los da prateleira, mas os ignora para todas as próximas consultas. Agora, é como se esses arquivos nem estivessem lá, liberando espaço “visual” na prateleira e deixando mais fácil para organizar o restante.

O mesmo conceito aplica-se às colunas marcadas como “unused” no Oracle Database. A coluna permanece na tabela, mas fica oculta e pode ser substituída com uma nova coluna usando o mesmo nome. É uma forma de marcar a coluna como obsoleta, aguardando uma futura limpeza completa.

Suponha que temos uma tabela ‘HR.ADMIN_EMP’ e queremos marcar as colunas ‘HIRE_DATE’ e ‘JOB_ID’ como não utilizadas. Para isso, utilizamos o comando:

SQL
ALTER TABLE hr.admin_emp SET UNUSED (hire_date, job_id);

image 1
ALTER TABLE hr.admin_emp SET UNUSED (hire_date, job_id);
  • As colunas ‘HIRE_DATE’ e ‘JOB_ID’ serão tratadas como inexistentes em futuras consultas.
  • Se houver restrições, índices ou estatísticas associados, serão removidos (com exceção dos índices internos de colunas LOB, que permanecem).
  • O nome da coluna é “liberado”, permitindo que você crie uma nova coluna com o mesmo nome, caso necessário.

Este método é mais rápido do que remover as colunas diretamente e permite que o espaço seja recuperado de forma programada posteriormente.

Imagine que você tem uma prateleira cheia de livros, mas alguns já não servem mais. Em vez de retirá-los e reorganizar a prateleira (o que levaria tempo), você apenas os cobre com uma cortina. Isso libera os nomes dos espaços para novos livros, mas os antigos continuam lá até que você decida remover tudo de uma vez, em um momento mais conveniente.

Da mesma forma, ao marcar uma coluna como UNUSED no Oracle Database, ela é “escondida” sem ser realmente excluída, liberando o nome da coluna e reduzindo o I/O, ou seja, o número de operações de entrada e saída. Depois, você pode agendar a remoção completa, recuperando o espaço de uma vez e mantendo o desempenho imediato da tabela.

É possível monitorar quais tabelas têm colunas definidas como “unused” através da visualização de dados dicionários, como em ‘DBA_UNUSED_COL_TABS’. Para listar essas tabelas, basta executar:

SQL
SELECT * FROM DBA_UNUSED_COL_TABS;

Isso nos mostra todas as tabelas e o número de colunas marcadas como “unused”:

image 2
SELECT owner, table_name, count FROM DBA_UNUSED_COL_TABS

Quando for conveniente (talvez durante uma manutenção programada), você pode liberar o espaço usado por essas colunas com o comando:

SQL
ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS;

image 3
ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS

Isso elimina permanentemente as colunas marcadas como “unused” e recupera o espaço. Assim, a tabela fica definitivamente otimizada e pronta para um uso mais eficiente de armazenamento.

Marcar colunas como “unused” é uma estratégia prática e eficaz para otimizar tabelas grandes de forma gradual. Isso permite administrar o crescimento do banco de dados sem o impacto de excluir colunas imediatamente. Experimente aplicar este conceito e veja como ele facilita o gerenciamento das tabelas em seu Oracle Database.

Tercio Haring

Tercio Haring

Tércio Haring é pai do Max e um entusiasta incansável de TI. Sua paixão pelo próximo o levou a ser socorrista, sempre pronto para ajudar. No universo da tecnologia, seu objetivo vai além de simplesmente compartilhar conhecimento; ele busca manter sua mente conectada ao futuro e abraçar os desafios como oportunidades disfarçadas. Escreve com o objetivo de tornar o complexo mundo dos bancos de dados mais acessível e compreensível, sempre com um toque de humor para tornar a jornada mais leve e divertida. Se você procura insights valiosos, explicações claras e, claro, algumas boas risadas, Tércio é a pessoa certa para te guiar. Junte-se a ele para explorar, aprender e crescer nesse vasto e fascinante universo Oracle!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress