Evite fragmentação com o Particionamento no Oracle
Este artigo apresenta como devemos proceder para evitar fragmentação de tabelas através do particionamento da base de dados.
[rotulo-mentoring/] [lead-mentoring]A técnica de particionamento segrega os registros com base em uma chave de particionamento especialmente definida e, ao eliminar os dados, a partição inteira é eliminada, evitando assim a fragmentação.
Neste artigo veremos como empregar a técnica de particionamento de forma a termos nossas bases de dados desfragmentadas. O entendimento deste tema é útil em situações onde é necessária a exclusão de uma quantidade alta de dados, principalmente para operações de expurgo de dados dos sistemas OLTP, a utilização da técnica de particionamento é especialmente útil, pois elimina por completo o eterno efeito colateral de fragmentação de tabela. [/lead-mentoring]
Um problema relativamente comum em bancos de dados é a fragmentação de tabelas. Mas é importante deixar claro que a fragmentação em tabelas acontece, primordialmente, em ambientes OLTP (On-Line Transactional Processing - Processamento de Transações On-Line) onde a quantidade de alterações (UPDATE) e exclusões (DELETE) é elevada.
Um ambiente OLTP é uma classe de sistemas que facilita a operação e gerenciamento de aplicações orientadas, normalmente, a entrada de dados e processamento de transações de consultas. OLTP também tem sido usado para se referir a processamento no qual o sistema responde imediatamente a pedidos do usuário. Um caixa eletrônico para um banco é um exemplo de uma aplicação comercial de processamento de transações on-line.
Em aplicações de grande porte, a eficiência de um sistema OLTP pode depender de um sofisticado software de gerenciamento de transações e/ou táticas de otimização de banco de dados para facilitar o processamento de um grande número de atualizações simultâneas para um banco OLTP.
Mas por qual motivo a fragmentação acontece em função de operações de UPDATE e DELETE? A fragmentação acontece devido a espaços nos blocos de dados reservados para a tabela que são liberados.
No caso de um UPDATE, isso acontecerá caso a alteração aconteça de uma forma que “diminua” o tamanho do registro em questão como, por exemplo, alterar a descrição de um produto de “Hamburger de proteína texturizada de soja” para “Hamburger de PTS”. Percebemos claramente a diminuição no tamanho da informação e, consequentemente, menos espaço de armazenamento será necessário, liberando espaço.
O caso de um DELETE é ainda mais claro, pois ao excluir um registro no banco de dados o espaço utilizado para armazená-los será imediatamente liberado.
Mas precisamos ainda entender como o Oracle gerencia o espaço para as tabelas. O espaço liberado normalmente não é reutilizado imediatamente e, em alguns casos, nunca são reutilizados deixando, por consequência, “buracos” na tabela que é justamente o que chamamos de fragmentação.
Quando os registros em uma tabela não são armazenados de forma contínua, muitas vezes utilizando inclusive blocos de dados diferentes, o impacto inevitável será a perda de performance, pois será necessário efetuar mais de uma leitura de bloco para recuperar todo o registro.
A fragmentação atua diretamente neste tipo de cenário, pois as operações de UPDATE e DELETE não liberarão o espaço livre abaixo da marca d’água da tabela (High WaterMark).
A High WaterMark, ou simplesmente HWM, é um “ponteiro” utilizado no banco de dados para indicar o espaço utilizado em um bloco. O espaço abaixo da HWM contém (ou já conteve) dados.
Se já conteve, significa que houve uma operação de DELETE ou UPDATE (reduzindo o tamanho da informação). E como o Oracle sabe que, com certeza, não há informações no bloco acima da HWM, então será efetuada a leitura do bloco apenas até a HWM quando um Full Table Scan é executado.
Full Table Scan (varredura total da tabela), também conhecida como " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo