.comment-link {margin-left:.6em;}

Thursday, August 04, 2005

Indices

Autor: Edna Gobbi
A Dúvida.

Marcio, boa tarde.

Voce pode me esclarecer esta duvida??
O índice e para melhorar o desempenho de acesso às tabelas.
Tendo como função reduzir o I/O em disco,
quando diz isto, quer dizer que a informação esta em cache de memoria ??

Qual tipo de memoria ele aloca???
O buffer_chache ou a library_cache??

Grata

Edna


Edna Gobbi


O índice pode melhorar ou não o desempenho quanto ao acesso às tabelas, depende de como ele é usado, portanto é preciso entender como ele funciona para saber usá-lo. Uma leitura neste artigo pode ajudar a começar a entender.

"Tendo a função de reduzir I/O" ... Mais uma vez, esta afirmação é verdadeira se o uso do índice for adequado. Caso contrário, o índice simplesmente provoca uma avalanche de IO.

Tomemos por analogia a leitura de um livro:
- sua leitura será o IO
- o livro que está lendo os datafiles
- e nesse livro (datafiles) temos os capítulos (segmentos de dados) e o índice remissivo (segmento de índice).

Se deseja achar um determinado assunto, terá maior facilidade se for ao índice, procurá-lo, encontrar a página, ir até ela e ler. Contudo, se estiver lendo o livro todo convencionalmente, e for através do índice, provalvemente terá muito mais trabalho. Imagine o esforço para completar a leitura! Necessitaría ainda, organizar a sequência da informação trazida do índice remissívo para que houvesse algum sentido, porque nele a organização é alfabética por assunto chave e não por capitúlos.

Assim como qualquer índice de livros nos ajuda rapidamente chegar a um tema, o índice das tabelas também rapidamente encontra pequenas porções de informação, porém devemos estar atentos quando usá-lo e não deixar nossa "leitura" mais difícil e demorada do que simplesmente abrir o livro na página um e ir até o final.

Quanto a memória alocada: a informação pode estar ou não na memória, segue o mesmo mecanismo dos blocos de dados com LRU/MRU como regra de manutenção de blocos no cache. A porção de memória que ele usa é a buffer cache. Na library cache estão armazenados, basicamente, as sql areas comum e privada, ou seja os plsql, cursores e códigos em java.
Comments:
Realmente, índice nem sempre ajuda. Eu ja tive problema com uma query que acessava a tabela por índice, deixei rodando por 6 horas e aí começou a responder. Peguei e coloquei um hint de FULL TABLE SCAN e pronto, em duas horas começou a responder. A tabela era um monstro!
 
Olá, Márcio. Você ainda pretende escrever nesse blog?

[]s
 
Sim, na verdade voltarei a escrever amanhã a noite. Já tenho todos os elementos da minha nova configuração (quero dizer aqui em casa) fiz uma reforma e meu escritório fico *quase* pronto. Falta eu configurar as placas de rede wireless, mas no meu artigo de retorno vou contar um pouco disso. Muito obrigado pela leitura.
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?