Pular para o conteúdo

Performance de consultas em Tablespaces separados para Dados e Índices

Performance de consultas em Tablespaces separados para Dados e Índices

Olá pessoal,

No artigo de hoje vou falar rapidamente sobre um assunto que gera bastante polêmica entre os profissionais que trabalham com Banco de Dados (BD) Oracle e que pretendem otimizar o acesso aos dados através de configurações dos tablespaces. Existe um mito no mundo Oracle que diz que somente separar dados e índices em tablespaces diferentes pode otimizar consultas aos dados das tabelas envolvidas.

consultas em Tablespaces separados para Dados e Índices

A verdade é que somente separar os dados e índices de uma tabela em tablespaces diferentes não é suficiente para otimizar consultas. Já li o Oracle Database Performance Tuning Guide 10GR2 e o Oracle Database Performance Tuning Guide 11G Release 2 e em alguns trechos desses documentos eles passam uma informação incompleta de que separar os dados e índices pode otimizar o acesso aos dados. Um benefício pode existir se você configurar o tablespace de índices para não gerar log, porém essa configuração também pode não ter efeito se o BD for configurado para forçar log (configuração recomendada para ambientes com Data Guard).

Indo mais a fundo nas documentações citadas no parágrafo anterior, a Oracle indica que a leitura dos dados e índices de uma tabela é feita de forma sequencial, onde o índice é lido primeiro e a tabela é lida em seguida. Esta é uma informação que torna evidente o fato de que apenas separar dados e índices em tablespaces diferentes não pode melhorar a performance das consultas, pois o otimizador de queries do Oracle nunca irá ler as tabelas e índices ao mesmo tempo (ao contrário do que muitos pensam)!

Para melhorar a performance das consultas ao planejar o armazenamento de dados e índices, um dos melhores métodos é não apenas separar dados e índices em tablespaces diferentes, mas além disso, criar o tablespace de índices com tamanho de blocos maior que o tamanho de blocos padrão do BD (8 kb). Em testes que eu demonstro nos meus treinamentos de SQL Tuning, blocos de 16 kb ou 32 kb para índices são ótimas opções para otimizar o acesso aos dados. Mais detalhes sobre o porquê do tamanho de bloco maior e como configurá-los, deixo para explicar nos meus treinamentos.

Por hoje é só pessoal!

[]s

Referência

Fábio Prado

Fábio Prado

Atua na área de tecnologia há 13 anos, possui experiência e profundos conhecimentos em Análise de Sistemas, programação com Dot Net e Administração de Bancos de Dados Oracle.

É Oracle ACE, DBA Oracle, instrutor de treinamentos em Bancos de Dados Oracle na FABIOPRADO.NET, articulista da revista SQL Magazine e diversos blogs e sites de TI e autor do blog www.fabioprado.net . É Bacharel em Ciências da Computação, com MBA e Pós-graduação em Gestão de Projetos.

Possui as seguintes certificações: Microsoft: MCP, MCSD, MCAD, MCSD.NET, MCDBA, MCTS, MCT e MCPD; Oracle: OCP Database 10G e 11G, OCA PL/SQL e Oracle Database 11g Performance Tuning Certified Expert.

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