Monday, June 7, 2010

(T) Indexação no Data Warehouse - Parte 1

Um índice é, na maior parte dos casos, uma estrutura separada dos dados da tabela a que ele se refere. Ele armazena a localização de linhas no banco de dados, baseado nos valores de coluna especificados quando o índice é criado. Os índices são como minicópias dos dados da tabela a que se referem. Vamos supor que uma consulta fosse restrita a LAST_NAME e procurasse nomes que começassem com o texto "SM". Sem um índice em LAST_NAME, o banco de dados leria da primeira linha até a última, procurando as linhas com o string de pesquisa desejado. Com um índice, o banco de dados percorreria, obteria um endereço da linha qualificada e, em seguida, apresentaria os dados da linha qualificada, para o processo que fez a consulta. Em resumo, é para isso que servem os índices.

As pequisas de índice são o segredo da otimização do tempo de resposta da maior parte das consultas e são usados sistematicamente em um data warehouse para melhorar seu desempenho de saída.

Um desempenho de saída melhorado contribui para as quatro palavras tão importantes para o sucesso de um projeto de data warehouse - maior satisfação do cliente. No entanto, para se atingir este estágio se faz necessário decidir onde colocar os índices. De muitas maneiras, essa é uma faca de dois gumes: índices demais levam a uma sobrecarga maior do sistema, mas índices de menos podem facilmente diminuir a velocidade de recuperação dos dados no momento da consulta. Então...

Quais colunas indexar?

Existem duas regras ou diretrizes principais com relação a quais colunas indexar no banco de dados: seletividade e critérios de seleção. Seletividade, é uma medida do número de valores distintos na coluna de uma tabela, comparado ao número de linhas da tabela inteira. O predicado de uma instrução SQL é aquela parte onde os critérios de seleção são especificados. Esses critérios de seleção especificam quais linhas de informação devem ser incluídas no conjunto de resultados da consulta. O primeiro critério com a palavra-chave WHERE; todos os critérios subseqüentes começam com a palavra-chave AND. O conjunto de resultados é um conjunto de uma ou mais linhas que se qualificam para inclusão em uma consulta específica.

Consideração sobre a seletividade

Vamos supor que existissem 79.000 linhas em uma tabela, em um data mart financeiro, e que a coluna ACC_TYPE tivesse 8 valores distintos. A seletividade de qualquer linha em uma tabela é calculada de acordo com a seguinte fórmula:

seletividade = (linhas na tabela / valores distintos) * ( 1 / linhas na tabela)

Isso é o mesmo que dizer que a seletividade é o inverso do valor encontrado em NUM_DISTINCT para essa coluna. Em nosso exemplo, a seletividade é igual ao inverso de 8, o que dá 0,125, ou 12,5, expresso como uma porcentagem. Isso leva à primeira das três diretrizes de indexação.

Quando é encontrado um valor de coluna menor do que 5% de todas as linhas em uma tabela, essa coluna é uma boa candidata para um índice.

Espero que esta primeira parte deste importante tópico, tenha sido útil para todos vocês. Na próxima semana falarei da outra diretriz de indexação: consideração sobre o predicado.

Um grande abraço a todos!

No comments:

Lastest Posts

(T) Using shared variables and key-value pairs