MCDBA Brasil    
17:51:18
  Job Board


[Todas Oportunidades]
 

  TechNet Experience



 

  Recursos de Pesquisa

Encontrou um erro no SQL Server e não sabe o que ele significa?
Pesquise-o aqui.

Pesquisar na Web
MS Knowledge Base

   Pesquisar no Portal
   Pesquisar nos Fórums
 

  Links Rápidos


Envie bugs e feedback de melhorias para o time do SQL Server.




SQL Server 2008 R2 Books Online
Feature Pack for SQL Server 2008 R2
Download SQL Server Express 2008 R2 (FREE)
Download SQL Server 2008 R2 Trial
Cumulative Update 1 for SQL Server 2008 R2
Lista de Cumulatives Updates liberados para SQL Server 2008 R2
Cumulative Update 8 for SQL Server 2008 SP1
Lista de Cumulatives Updates liberados para SQL Server 2008 SP1
Lista de Cumulatives Updates liberados para SQL Server 2008 (RTM)
Lista de Cumulatives Updates liberados após SQL Server 2005 SP3
SQL Server 2005 SP3
Feature Pack for SQL Server 2008 (Out/08)
SQL Server 2008 Books Online (Out/09)
SQL Server 2008 Books Online (MSDN)
SQL Server 2005/2008 Samples Databases
SQL Server 2005 Features Comparison
Lista de Cumulative Hotfix liberados após SQL 2005 SP2
SQL Management Studio Express SP2
SQL Server 2000 SP4
Cumulative Hotfix for SQL 2000 SP4 (build 2187)
Bugs fixed in SQL 2000 SP4
SQL Server 2005 (Preços e licenciamento)
Upgrading to SQL Server 2005
Upgrading MSDE 2000 to SQL Express 2005
Documentando o Servidor SQL Server
SQL Server 2005 (Requisitos de sistema)
MSDE 2000 Release A Free
SQL Server 2000 Performance Tuning Guide
SQL Server 2005 - Cursos Gratuitos
FAQ Sobre Uso Apropriado do MSDE
Analisando a Performance do Servidor-CheckList
SQL Server 2000 Security Tools
Northwind and Pubs Sample Databases
 

  Menu Principal

Home
 Fale Conosco
 Pesquisas
 Recomende-nos
 Sobre
 
Comunidade:
 Arquivo de Newsletter
 Arquivo de Notícias
 Artigos/Tutoriais
 Estatíticas
 Fórum
 Livro de Visitas
 MCDBA Database
 Newsgroups e Blogs
 Revistas .NET/SQL
      Magazine

 SQL Server FAQ
 Top 10
 Tópicos
 Utilitários
 Web Links
 Webcasts
 
Membros:
 Downloads
 Enviar Notícias
 Hands On Labs
 Mensagens Privadas
 Scripts Sql
 Sua Conta
 

  Publicidade




 

  Artigos

Total de artigos: 600
Total de Categorias : 6


Mais visualizados
1: Instalando e Configurando o SQL Server 2005 Express
[1 comentários]
[147033 visualizações]

2: Livros em .pdf para download
[0 comentários]
[99307 visualizações]

3: SQL Server 2005 - Cursos Gratuitos
[1 comentários]
[34017 visualizações]

4: Microsoft SQL Server 2008 Books Online em Portugês
[0 comentários]
[24954 visualizações]

5: Database Mirroring - Configurando Alta Disponibilidade no Banco de Dados
[5 comentários]
[24547 visualizações]

6: Analisando a Performance do Servidor - CheckList
[5 comentários]
[21369 visualizações]

7: Documentando o Servidor SQL Server
[17 comentários]
[17708 visualizações]

8: Plano de Execução - O que analisar ?
[5 comentários]
[14667 visualizações]

9: Liberado versão final do SQL Server 2005 SP2
[0 comentários]
[13207 visualizações]

10: Importando e Exportando dados do SQL Server 2000
[0 comentários]
[12459 visualizações]


[ Mais conteúdo como este na seção de notícias ]
 

  Scripts SQL

Total de Scripts: 44


Últimas inclusões
1: usp_docservidor_2005

2: sp_truncatetable

3: usp_docservidor

4: fn_dateformat


Mais Baixados
1: usp_docservidor
[Downloads: 1814]

2: Localizando Registos Duplicados
[Downloads: 1773]

3: Localiza maiores tabelas em uma base
[Downloads: 1526]

4: Gera script para inserir dados
[Downloads: 1510]

5: Fazendo Rebuild dos índices
[Downloads: 1486]

6: sp_usrheadblocker
[Downloads: 1484]

7: Cria Job para Backup
[Downloads: 1478]

8: Derrubar todas as conexões da base
[Downloads: 1477]

9: usp_docservidor_2005
[Downloads: 1338]

10: Busca Tabelas sem índices
[Downloads: 1333]

11: Estima tamanho da tabela
[Downloads: 1310]

12: Associar Usuários Orfãos
[Downloads: 1253]

13: sp_usrtrackusers
[Downloads: 1180]

14: Obtendo as configurações de um servidor
[Downloads: 1148]

15: Recuperando base em Suspect
[Downloads: 1118]

16: Monitora Espaço em Disco
[Downloads: 1105]

17: Mostra espaço ocupado pelas tabelas
[Downloads: 1078]

18: Monitora espaço do Database
[Downloads: 1076]

19: Calcula seletividade da coluna
[Downloads: 987]

20: Migrando Logins entre Servidores
[Downloads: 963]

21: Alterar o owner dos objetos
[Downloads: 945]

22: Usando o DBCC SHRINKFILE
[Downloads: 890]

23: sp_usrinputbuffer
[Downloads: 852]

24: Recuperando uma base sem o arquivo de log
[Downloads: 765]

25: Obtendo as configurações de um servidor (Básico)
[Downloads: 709]

26: Administrar Cluster pelo Query Analyzer
[Downloads: 671]

27: Filtra SQL Errorlog
[Downloads: 667]

28: Verificando o Status das Triggers
[Downloads: 609]

29: Excluindo todas as tabelas de uma base
[Downloads: 580]

30: Desatachar bases do servidor
[Downloads: 559]

31: fn_dateformat
[Downloads: 540]

32: Script para alterar o nome lógido da base
[Downloads: 537]

33: Verificando o Status de um Cluster
[Downloads: 533]

34: Cria banco Northwind com dados
[Downloads: 531]

35: Localizar Tabelas Temporárias
[Downloads: 528]

36: Restaurando uma base para discos diferentes
[Downloads: 528]

37: Pesquisa uma dada coluna nas tabelas
[Downloads: 524]

38: Mostra Tabelas por FileGroups
[Downloads: 477]

39: Script para Attachar uma banco de dados
[Downloads: 467]

40: Importa arquivo .trc para uma tabela
[Downloads: 455]

41: sp_truncatetable
[Downloads: 433]

42: Expandindo o tamanho de uma base
[Downloads: 425]

43: Salva Pacotes DTS como arquivo .dts
[Downloads: 405]

44: Cria banco Pubs com dados
[Downloads: 299]


[ Mais conteúdo na seção de Scripts ]
 

  Sample Chapters

Há um problema em visualizar as notícias deste site
 

  SQLServercentral.com

·Inside the Optimizer: Constructing a Plan - Part 2
·Webinar: Turn your backups into live databases with SQL Virtual Restore
·AdvanceTimePolicy and Point Event Streams In StreamInsight.
·An Informal Look at Database Performance
·Raw Materials - Consultant, Superstar
·The DIS-Information Principle: A Splitting Headache
·Inside the Optimizer: Constructing aPlan - Part 1
·Early September Free Training from PASS VCs
·SQL Saturday #55 - San Diego
·Extended Protection available in SQL Server 2008 R2

Leia mais...
 

  Total Hits

Total de Page views: 9908435
Page views de hoje: 7168
Page views de ontem: 8417
Page views do mês: 69182

Desde 03 de Julho de 2004
 

  Top 10 Links


1: SQLDev.net

2: DevSQL

3: SQL-Server-Performance.com

4: SQLDTS.com

5: SQLServerCentral.com

6: Database Journal

7: DBAzine.com

8: Microsoft SQL Server (Documentação)

9: Site pessoal do Narayana Vyas Kondreddi

10: SearchDatabase.com

 


 
  Artigos: Plano de Execução - O que analisar ?
Postado em Terça-feira, 5 de Agosto de 2008 (23:10:00) por niltonpinheiro
 
 
  SQL Server Você costuma analisar a performance de suas queries antes de colocá-la em produção? Infelizmente, em meu dia-a-dia de trabalho tenho percebido que a resposta para esta pergunta é NÃO. Muitos problemas de performance acontece porque o desenvolvedor simplesmente não tem o hábito de analisar a performace das queries e como consequência temos queries utilizando índices de forma incorreta, queries que não utilizam os índices existentes na tabela e por incrível que pareça, até grandes tabelas sem índice algum.

Por outro lado, muitos desenvolvedores e DBA's utilizam ferramentas do Query Analyzer como o ShowPlan gráfico, SHOWPLAN_ALL ou SHOWPLAN_TEXT, mas a próxima pergunta é : O que devemos procurar quando examinamos o resultado do plano de execução de uma query?

Neste artigo descreverei algums pontos importantes nos quais você deve estar atento na hora de analisar o plano de execução de uma query. Para isto, estarei utilizando o Showplan gráfico do Query Analyzer. Sendo assim, para aqueles que não conhecem o SHOWPLAN, recomendo a leitura dos tópicos "SET SHOWPLAN_ALL", "SET SHOWPLAN_TEXT" e "Graphically Displaying the Execution Plan Using SQL Query Analyzer" no Books Online.

Em resumo, para ver o plano de execução de uma consulta no Query Analyzer, basta escrever a query e teclar Ctrl+L ou clicar no botão “Display Estimated Execution Plan” na barra de ferramentas do Query Analyzer.

É importante observar que, uma vez que os problemas de performance podem ter várias razões e consequentemente várias soluções, os pontos destacados aqui são pontos básicos que você deve analisar e na medida do possível evitar que aconteçam.

Primeiro Ponto: Operações com alto percentual de consumo

Em uma query simples, inicie procurando por operações que geram um alto percentual de consumo. Procurar por operações de alto consumo permitirá que você priorize qual problema deverá ser atacado primeiro.

Se você esta analisando uma query com multiplos statements, será gerado um plano de execução separado para cada statement. Para cada plano de execução será mostrado a ordem de execução da query, por exemplo: “Query 1”, “Query 2” e seu respectivo custo. Neste caso, procure pelas queries com maior custo.

Lembre-se : O plano de execução sempre deve ser lido da direita para a esquerda e de cima para baixo !!


Segundo ponto: Table Scan, Index Scans e Clustered Index Scans


Table Scans, Index Scans e Clustered Index Scans são operações que navegam por todas as linhas da tabela ou do índice e retornam as linhas que satisfazem a cláusula WHERE (assumindo que você use uma cláusula WHERE).

Um Table Scan obtém linhas de uma tabela não indexada, conhecida também como “heap table”. Um Index Scan procura por linhas no índice não cluster, enquanto que um clustered index scan procura por linhas no índice cluster de uma tabela.

É importante destacar que os Scans nem sempre são ruins, principalmente quando em tabelas com um pequeno número de registros ou consultas que devem retornar todos os registros de uma tabela. Scans podem ser ruins se sua consulta roda por um período muito longo vindo a prejudicar inclusive outras conexões, causando o que chamamos de blocks.

Os Scans são em sua maioria resolvidos através da criação de índices apropriados. Algumas soluções incluem alterar suas consultas de forma a ser mais seletiva, ou seja, usar a cláusula WHERE para filtrar ao máximo possível os registros retornados, adicionar/remover e modificar índices, remover hints, alterar o desing da tabela e usar a ferramenta Index Tuning Wizard para lhe auxiliar na criação de possíveis índices.

Terceiro ponto: Warnings


Warings ou alertas normalmente são vistos quando não existem estatísticas para colunas de uma tabela e essas colunas são utilizadas como filtros de pesquisa nas queries. Eles podem ser solucionados através da criação de estatísticas para a coluna afetada (CREATE STATISTICS) ou ainda, criação de índices e adição de cláusulas JOIN.


Quarto ponto: Seta muito grossa


As setas não são operadores, elas simplesmente são usadas para ligar um operador a outro. Através das setas podemos ter uma estimativa da quantidade de linhas afetadas por uma query, isto porque, quanto maior a expessura da seta, maior é a quantidade de linhas envolvidas na operação. Ou se preferir, a quantidade de linhas passada de um operador para outro.

Para que você possa ver a estimativa de quantidade e tamanho das linhas afetadas, basta posicionar o cursor sobre a seta.

Neste senário, sempre dê uma atenção especial às setas mais grossas, pois uma linha muito grossa pode indicar uma alta operação de I/O.

Para solucionar este tipo de problema você deve tentar fazer com que as setas fiquem o mais fina possível e aqui novamente entra a cláusula WHERE. Por outro lado, evite obter mais linhas que o necessário.

Quinto Ponto: Bookmark Lookups

O operador Bookmark Lookup ocorre em conjunto com um nonclustered index seek quando a consulta deve obter colunas que não estão disponíveis dentro do nonclustered index.  Neste senário, procure por Bookmark Lookup que possua um alto percentual de consumo.

Se o custo da operação de Bookmark Lookup for muito alto, verifique se um índice cluster ou um índice não cluster composto pelas devidas colunas (covering index) pode ser utilizado.

Sexto Ponto: Sorting

Um operador SORT ordena todas as linhas de entrada em uma ordem ascendente ou descendente. Isto depende da cláusula ORDER BY de sua consulta.

Operadores Sort normalmente acrescentam uma grande taxa de I/O às operações, primariamente utilizando o TEMPDB para suas operação.

Se você costuma ver o operador SORT com muita frequência em suas consultas e este operador possui um alto consumo de operação, considere por remover a cláusula ORDER BY. Por outro lado, se você sabe que sempre ordenará sua consulta por uma coluna em específico, considere indexá-la. Lembre-se que no comando CREATE INDEX você pode fixar a direção de ordenação (ASC ou DESC) para um índice em particular.

Nota: O Profiler é uma excelente ferramena para ajudar na identificação de queries muito pesadas ou que possuem um alto tempo de execução.



Nota: Review
 
 
  Links relacionados

· Site Oficial do SQL Server
· Site Oficial do MSDE 2000
· SQLServerCentral.com
· SQL-Server-Performance.com
· SQLDTS.com
· Mais sobre SQL Server
· Notícias por niltonpinheiro


As notícias mais lidas sobre SQL Server:
Alterando o Collate Default do Servidor

 

  Classificação de notícias

Votar: 4.75
Votos: 41


Por favor, dedique um segundo de seu tempo para votar nesta notícia:

Excelente
Muito bom
Bom
Regular
Péssimo


 

  Opções


 Imprimir  Imprimir

 Envie esta notícia para uma pessoa  Envie esta notícia para uma pessoa

 

 
 
Tópicos relacionados

SQL Server
 
 


 
 
Os comentários são propriedade de quem os escreveu. Nós não nos responsabilizamos por seu conteúdo.
 
 


 
 
Comentários não podem ser enviados por usuários anônimos, por favor Cadastre-se
 
 


 
 
Re: Plano de Execução - O que analisar ? (Pontos: 1)
por Rodrigos em Segunda-feira, 10 de Janeiro de 2005 (16:20:28)
(Informações do usuário | Enviar uma mensagem) http://www.lemon.com
E quando temos umas 10 tabelas no select e cada uma aponta 100% ? Dependendo do caso, algumas apontam 200% ?!?!?!?!?!


 
 


 
 
Re: Plano de Execução - O que analisar ? (Pontos: 1)
por villasecca em Segunda-feira, 23 de Maio de 2005 (9:23:16)
(Informações do usuário | Enviar uma mensagem)

Lí e gostei do que lí, vou começar a utilizar.

 



 
 


 
 
Re: Plano de Execução - O que analisar ? (Pontos: 1)
por pryazarias em Segunda-feira, 23 de Janeiro de 2006 (9:32:42)
(Informações do usuário | Enviar uma mensagem)

Lí e gostei, já comecei a utilzar, espero que logo faça mais artigos relacinados a este assunto....Parabéns...



 
 


 
 
Re: Plano de Execução - O que analisar ? (Pontos: 1)
por virtam em Quarta-feira, 17 de Outubro de 2007 (10:21:02)
(Informações do usuário | Enviar uma mensagem)

Muito bom o artigo,

 

gostaria de sugerir um artigo sobre os show server trace...



 
 


 
  Todas os logotipos e marcas registradas são de propriedade de seus respectivos donos.
Sistema de portais PHP-Nuke. Copyright © 2003. PHP-Nuke é um Software Livre liberado sob licença GNU/GPL.
Tempo para gerar esta página: 0.415 segundos