Você está na página 1de 4

A velocidade costuma ser uma preocupao quando se trabalha com banco de dados.

Muitos fatores contribuem para a performance de seu banco de dados: o sistema operacional, problemas de hardware (como memria e espao em disco) e at o design do aplicativo que est acessando o banco de dados. O projeto de seu banco de dados tambm tem um papel importante na performance. Neste artigo, falarei sobre alguns dos procedimentos que voc pode adotar para melhorar a performance do banco de dados do SQL Server. Falarei especificamente sobre a capacidade do SQL Server 2000 de criar ndices em Views e sobre como configurar apropriadamente seus ndices usando o ITW (Index Tuning Wizard). Ensinarei o que fazer para garantir que suas consultas se beneficiem ao mximo das vantagens de informaes de estatsticas e de ndice. A performance deve ser levada em conta desde a fase inicial do projeto do banco de dados. No entanto, voc poder fazer modificaes para melhorla mesmo depois de ter iniciado a produo do banco de dados. Os ndices so objetos de banco de dados que otimizam a busca e a classificao dos dados. ndices configurados apropriadamente podem fazer uma enorme diferena no tempo levado para inserir ou extrair dados do banco de dados. O ITW pode ajud-lo a determinar como implementar ndices no banco de dados para aumentar ao mximo a performance. O ITW pode ser usado para recomendar a melhor configurao de ndices para um banco de dados em funo de uma carga de trabalho especfica. Uma carga de trabalho um script SQL ou rastreamento SQL que voc salva em um arquivo externo. As recomendaes do ITW sero feitas de acordo com as cargas de trabalho e, por isso, importante que voc prepare antes as informaes apropriadas. Provavelmente, a maneira mais fcil e completa de criar uma carga de trabalho para o ITW salvar um rastreamento SQL criado pelo SQL Profiler. Um recurso novo do SQL Server 7.0, ele registra a atividade do servidor usando os filtros e critrios que voc forneceu. Certifique-se de que seu rastreador SQL esteja registrando as atividades comuns do banco de dados quando criar um rastreamento com o SQL Profiler para ser usado com o ITW. Em outras palavras, escolha uma hora em que o banco de dados no esteja especialmente sobrecarregado ou subutilizado. O tempo que voc levar para executar os rastreamentos depender especificamente do seu sistema. Em alguns casos, poder levar apenas uma hora para executar o rastreamento e capturar uma representao precisa da atividade do sistema. Em outros, podero ser necessrios vrios dias para registrar todas as variaes padro das atividades ocorridas no banco de dados. Acione o ITW Uma vez criado o arquivo de carga de trabalho a ser usado, acione o ITW selecionando um servidor na rvore no modo de visualizao em rvore do Enterprise Manager. Selecione Wizards no menu Tools, abra o menu dropdown do n Management na rvore de visualizao e selecione Index Tuning Wizard. Ser exibida a tela de boas-vindas do ITW. A segunda tela

do ITW permite que voc especifique qual servidor e banco de dados deseja analisar. Voc tem duas opes adicionais nessa tela: Keep All Existing Indexes e Perform Thorough Analyses. Desmarcar a opo Keep All Existing Indexes permitir que o ITW faa as recomendaes de indexao. No entanto, o ITW pode sugerir a excluso ou alterao de alguns dos ndices existentes. Ou seja, se voc no quiser alterar seus ndices, deixe essa opo selecionada. Selecionar a opo Perform Thorough Analyses far com que o ITW realize a anlise mais completa e abrangente possvel. Embora essa opo possa apresentar resultados melhores, provavelmente exigir mais tempo para ser concluda. Alm disso, ela tambm pode causar uma sobrecarga no servidor. Por esses motivos, se voc escolher executar a anlise completa, sugerimos que o faa em um servidor de teste ou, no caso de usar o seu servidor de produo, que a execute fora dos horrios de pico. A terceira tela do ITW pede que voc especifique a carga de trabalho com a qual deseja trabalhar. Se estiver usando um arquivo criado pelo SQL Profiler, selecione o boto da opo My Workload File e use a caixa de dilogo File para localizar o arquivo em que salvou o rastreamento. Voc tambm pode definir algumas opes avanadas nessa tela clicando no boto do comando Advanced Options. Essas opes incluem a especificao da quantidade mxima de espao em disco a ser usada pelos ndices recomendados e o nmero mximo de consultas no seu arquivo de carga de trabalho em que dever ser feita a amostragem. Na quarta tela, voc especifica as tabelas para as quais deseja receber recomendaes de ndice. A seleo de poucas tabelas poupar tempo e o ajudar a se concentrar nas reas mais problemticas. No entanto, se estiver esperando que o ITW oferea sugestes sobre como otimizar o banco de dados como um todo, voc provavelmente escolher selecionar todas as tabelas de seu banco de dados. A prxima tela do ITW mostra as recomendaes de ndice com base nos critrios que voc forneceu (observe a Figura 1). Essa tela lhe oferece a opo de implementar imediatamente as recomendaes (programando a execuo para mais tarde) ou de salvar o script de execuo em um arquivo externo. Figura 1: Otimize com o ITW. O ITW (Index Tuning Wizard) fornece as recomendaes necessrias para que voc configure os ndices de seu banco de dados em funo de um arquivo de carga de trabalho especfico. Voc pode implementar essas recomendaes imediatamente ou agend-las para serem executadas mais tarde. O SQL Profiler constitui uma ferramenta valiosa na criao dos arquivos de carga de trabalho que sero analisados pelo ITW.

O ITW no oferece recomendaes sobre chaves primrias e outros ndices exclusivos nem sobre ndices para tabelas de sistema. Outras limitaes incluem a incapacidade de rever mais de 37.767 consultas em uma carga de trabalho especfica e a impossibilidade de oferecer sugestes para bancos de dados criados no SQL Server verses 6.5 e anteriores. Observe que o ITW faz as recomendaes com base na anlise de uma amostra de seus dados. Por esse motivo, voc poder perceber que est obtendo diferentes recomendaes se executar o ITW mais de uma vez para a mesma carga de trabalho. Se o ITW no fornecer nenhuma recomendao, isto pode estar sendo causado por dois motivos: o ITW no est detectando nenhuma melhoria na performance da configurao do ndice em relao performance anterior ou no h dados de amostragem suficientes nas tabelas para que o programa arrisque uma recomendao apropriada. Visualize os ndices Alm de indexar as tabelas, o SQL Server 2000 Enterprise Edition permite indexar Views. Suponha que voc esteja interessado em analisar o total de unidades vendidas para cada pedido no banco de dados Pubs. Esse cdigo SQL cria uma View denominada Quantity_Totals no banco de dados Pubs, que mostra as informaes junto com uma contagem do nmero de itens contidos no pedido: Use Pubs GO CREATE VIEW Quantity_Totals with SCHEMABINDING AS SELECT ord_num, Total_Quantity = Sum(qty), Total_Items = Count_Big(*) FROM dbo.sales GROUP BY ord_num

A funo COUNT_BIG nova no SQL Server 2000 e funciona da mesma maneira que a funo COUNT; a diferena reside no fato de que seu valor de retorno possui um tipo de dado bigint, ao contrrio do tipo de dado int retornado pelo valor COUNT. Para que as Views que contiverem uma clusula GROUP BY possam ser escolhidas para conter um ndice, elas tambm devero conter a funo COUNT_BIG. Crie uma View que contenha um ndice usando a opo SCHEMABINDING, que nova no SQL Server 2000. Quando voc especifica essa opo, a View vinculada ao esquema de suas tabelas subjacentes. Quando a View no contiver um ndice, o resultset retornado no ser armazenado permanentemente no banco de dados . Voc at pode utilizar uma View que faa referncia a muitas linhas de dados ou que envolva processamentos complexos, como a execuo de agrupamentos agregados e de mltiplos joins, porm, o overhead exigido pelo SQL Server para recriar o resultset para o View a cada vez que ele for referenciado poder ser significativo. Os ndices da View operam de forma bem parecida aos ndices das tabelas. E, a exemplo destas, as Views tambm podem ter um ndice em cluster e vrios ndices fora do cluster. No entanto, para criar ndices fora de cluster, voc precisar criar antes um ndice em cluster exclusivo para a View. A criao de um ndice em cluster para uma View armazena permanentemente no banco de dados o resultset referente a este modo. Embora os resultsets armazenados reflitam os dados do momento em que voc criou o ndice, todas as modificaes feitas nos dados subjacentes sero atualizadas automaticamente no resultset. Para criar um ndice em uma View, use a instruo CREATE INDEX (como se fosse criar um ndice em uma tabela).