Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
O Optimizador de consultas no Microsoft SQL Server 2005 ou no Microsoft SQL Server 2008 utiliza os seguintes tipos de informações para determinar um plano de consulta ideal:
Os metadados da base de dados
O ambiente de hardware
O estado da sessão da base de dados
Normalmente, tem de simular todos os estes mesmos tipos de informações se pretender reproduzir o comportamento do Optimizador de consultas num sistema de teste.
Serviço de apoio a clientes da Microsoft poderá pedir-lhe para gerar um script de metadados da base de dados. Serviço de apoio a clientes da Microsoft utiliza este script de metadados da base de dados para investigar um problema de optimização. Este artigo descreve os passos para gerar o script de estatísticas. Este artigo também descreve como o Optimizador de consultas utiliza as informações.
Se utiliza o SQL Server 2005, antes de seguir os passos para gerar o script, certifique-se de que o SQL Server Management Studio é a versão do SQL Server 2005 Service Pack 2 ou posterior. Se utilizar versões anteriores do SQL Server Management Studio no SQL Server 2005, o Assistente de script não contém todas as opções necessárias para os passos neste artigo para funcionar correctamente.
Ao gerar uma base de dados só de estatísticas clone, poderá ser mais fácil e mais fiável de scripts da base de dados inteira em vez de scripts objectos individuais. Quando o script base de dados completo, receberá as seguintes vantagens:
Evita problemas relacionados com falta de objectos dependentes são necessários para reproduzir o problema.
Requer menos significativamente passos para seleccionar objectos necessários.
Nota Se gerar um script para uma base de dados e os metadados para a base de dados contém milhares de objectos, o processo de criação de scripts consome recursos da CPU significativos. Recomendamos que gerar o script durante as horas de menor volume de trabalho. Ou, pode utilizar a segunda opção para gerar o script para objectos individuais.
Para cada base de dados que é referenciada pela consulta de script, siga estes passos:
Abra o SQL Server Management Studio.
No Explorador de objectos , expandir bases de dados e, em seguida, localize a base de dados que pretende script.
Clique com o botão direito do rato na base de dados, aponte para tarefas e, em seguida, clique em Gerar Scripts .
No Assistente de script, verifique se a base de dados correcta está seleccionada. Clique para seleccionar a caixa de verificação script todos os objectos numa base de dados seleccionado e, em seguida, clique em seguinte .
Na caixa de diálogo Escolher opções de script , altere as definições seguintes: o valor predefinido para o valor listado na tabela que se segue.
Reduzir esta tabelaExpandir esta tabela
Opção de criação de scripts
Valor para seleccionar
área de ANSI
TRUE
continuar a execução de scripts no erro
TRUE
Gerar scripts de objectos dependentes
TRUE
incluir nomes de restrição do sistema
TRUE
agrupamento de script
TRUE
Criar base de dados de script
TRUE
inícios de sessão de script
TRUE
permissões de nível de objecto de script
TRUE
Estatísticas de script
Estatísticas de script e histogramas
índices de script
TRUE
Accionadores de script
TRUE
Nota A opção de Inícios de sessão de script e a opção de Permissões de nível de objecto de script podem não ser necessárias a menos que o esquema contém objectos que são propriedade inícios de sessão diferente dbo .
Clique em seguinte .
Clique na opção script ao ficheiro e, em seguida, introduza um nome de ficheiro.
Pode apenas script objectos individuais que são referenciados por uma determinada consulta em vez de scripts de base de dados completa. No entanto, a menos que todos os objectos de base de dados criados com a cláusula WITH SCHEMABINDING, as informações de dependência na tabela de sistema sys.depends não é sempre possível precisas. Este inaccuracy pode causar um dos seguintes problemas:
O processo de criação de scripts não script de um objecto dependente.
O processo de criação de scripts pode script objectos na ordem incorrecta. Para executar o script com êxito, tem de editar manualmente o script gerado.
Por conseguinte, não recomendamos que script objectos individuais, a menos que a dados tem muitos objectos e scripts caso contrário levaria demasiado longo. Se tiver de utilizar objectos individuais do script, siga estes passos:
No SQL Server Management Studio, expanda bases de dados e, em seguida, localize a base de dados que pretende script.
Clique com o botão direito do rato na base de dados, aponte para Base de dados de script como , aponte para CREATE para e, em seguida, clique em ficheiro .
Introduza um nome de ficheiro e, em seguida, clique em Guardar .
O contentor de base de dados principal irá ser script. Este contentor inclui ficheiros, grupos de ficheiros, a base de dados e propriedades.
Clique com o botão direito do rato na base de dados, aponte para tarefas e, em seguida, clique em Gerar Scripts .
Certifique-se de que a base de dados correcta está seleccionada e, em seguida, clique em seguinte .
Na caixa de diálogo Escolher opções de script , altere as definições seguintes: o valor predefinido para o valor listado na tabela que se segue.
Reduzir esta tabelaExpandir esta tabela
Opção de criação de scripts
Valor para seleccionar
área de ANSI
TRUE
continuar a execução de scripts no erro
TRUE
incluir nomes de restrição do sistema
TRUE
Gerar scripts de objectos dependentes
TRUE
agrupamento de script
TRUE
inícios de sessão de script
TRUE
permissões de nível de objecto de script
TRUE
Estatísticas de script
Estatísticas de script e histogramas
script USE DATABASE
TRUE
índices de script
TRUE
Accionadores de script
TRUE
Nota A opção de Inícios de sessão de script e a opção de Permissões de nível de objecto de script podem não ser necessárias a menos que o esquema contém objectos que são propriedade inícios de sessão diferente dbo .
Na caixa de diálogo Escolher tipos de objecto , seleccione todos os tipos de objecto da base de dados que referencia a consulta problemática.
Por exemplo, se a consulta só faz referência a tabelas, seleccione tabelas . Se a consulta faz referência a uma vista, seleccione as vistas e tabelas . Se a consulta problemática utiliza uma função definida pelo utilizador, seleccione funções .
Quando tiver seleccionado todos os tipos de objectos referenciados pela consulta, clique em seguinte .
Aparece uma caixa de diálogo para cada tipo de objecto da base de dados que seleccionou no passo 7. Em cada caixa de diálogo, seleccione as tabelas específicas, vistas, funções ou outros objectos de base de dados e, em seguida, clique em seguinte .
Clique na opção script ao ficheiro e, em seguida, especifique o mesmo nome do ficheiro que introduziu no passo 3.
Clique em Concluir para iniciar o processamento de scripts.
Quando termina o processamento de scripts, envie o ficheiro script para o engenheiro de suporte da Microsoft. O engenheiro de suporte Microsoft também pode pedir as seguintes informações:
A configuração de hardware, incluindo o número de processadores e a quantidade de memória física existe
As opções de SET que estavam activas quando executou a consulta
Nota Que tiver já fornecido estas informações através do envio de um relatório SQLDiag ou um rastreamento SQL Profiler. Pode ter também utilizado outro método para fornecer estas informações.
As tabelas seguintes ajudam a explicar como o Optimizador de consultas utiliza estas informações para seleccionar um plano de consulta.
Metadados
Reduzir esta tabelaExpandir esta tabela
Restrições
O Optimizador de consultas utiliza frequentemente restrições para detectar contradictions entre a consulta e o esquema subjacente. Por exemplo, se a consulta tem um "WHERE col = 5" cláusula e um "CHECK (col < 5)" restrição de verificação existe, o Optimizador de consultas sabe que existem linhas irão corresponder.
Tipos semelhantes de deduções sobre a condição de nulidade faz com que o Optimizador de consultas. Por exemplo, a cláusula "WHERE col IS NULL" é conhecida para ser VERDADEIRO ou FALSO, dependendo da condição de nulidade da coluna e se a coluna da tabela externa de uma associação externa. A presença de restrições de FOREIGN KEY é útil para determinar a cardinalidade e a ordem de associação adequado. O Optimizador de consultas pode utilizar informações de restrição para eliminar associações ou simplificar predicados. Estas alterações podem remover o requisito para aceder as tabelas base.
Estatísticas
As informações estatísticas contém densidade e um histograma mostra a distribuição da coluna à esquerda da chave de índice e estatísticas. Dependendo da natureza do predicado, o Optimizador de consultas pode utilize densidade, o histograma ou ambos para estimar a cardinalidade de um predicado. As estatísticas actualizadas são necessárias para estimativas de cardinalidade precisas. As estimativas de cardinalidade são utilizadas como uma entrada de calcular o custo de um operador. Por este motivo, tem de ter as estimativas de cardinalidade boa obter planos de consulta ideal.
Tamanho da tabela (número de linhas e páginas)
O Optimizador de consultas utiliza os histogramas e densidade para calcular a probabilidade que um predicado determinado é verdadeira ou falsa. A estimativa de cardinalidade final é calculada multiplicando a probabilidade pelo número de linhas devolvido pelo operador de subordinados. O número de páginas na tabela ou o índice é um factor de calcular o custo de E/S. O tamanho da tabela é utilizado para calcular o custo de uma análise e é útil quando calcular o número de páginas que irá ser acedida durante uma procura de índice.
Opções de base de dados
Várias opções de base de dados podem afectar a optimização. As opções AUTO_CREATE_STATISTICS e AUTO_UPDATE_STATISTICS afectam se o Optimizador de consultas criará novas estatísticas ou estatísticas de actualização que estão desactualizadas. O nível PARAMETERIZATION afecta como a consulta de entrada é parametrizada antes da consulta de entrada é enviada para o Optimizador de consultas. Parameterization pode afectar a estimativa de cardinalidade e também poderá impedir a correspondência contra as vistas indexadas e outros tipos de optimizações. A definição de DATE_CORRELATION_OPTIMIZATION faz com que o optimizador procurar correlações entre colunas. Esta definição afecta estimativa cardinalidade e custo.
Ambiente
Reduzir esta tabelaExpandir esta tabela
Sessão SET opções
ANSI_NULLS se a definição afecta o "NULL = NULL" expressão for avaliada como true. Estimativa de cardinalidade para associações externas pode mudam consoante a definição actual. Além disso, também poderão alterar expressões ambíguas. Por exemplo, o "col = NULL" expressão for avaliada diferente consoante a definição. No entanto, o "col IS NULL" sempre expressão for avaliada da mesma forma.
Recursos de hardware
O custo para ordenar e hash operadores depende da quantidade relativa de memória que está disponível para o SQL Server. Por exemplo, se o tamanho dos dados for maior do que a cache, o Optimizador de consultas sabe em que os dados devem sempre ser spool no disco. No entanto, se o tamanho dos dados for muito menor do que a cache, a operação é provável que ser efectuado na memória. SQL Server também considera optimizações diferentes se o servidor tiver mais do que um processador e se não tiver sido desactivada parallelism utilizando a opção de configuração máximo grau de parallelism ou uma sugestão "MAXDOP".
Acções do SQL Server manter unidade (UA)
Determinadas funcionalidades apenas estão activadas em edições específicas do SQL Server 2005 ou do SQL Server 2008. Por exemplo, correspondência de uma consulta contra as vistas indexadas só ocorre em SQL Server 2005 Enterprise Edition. Do mesmo modo, a correspondência de guias de plano está limitado a SQL Server 2000 Standard Edition e o SQL Server 2005 Enterprise Edition.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 914288
(http://support.microsoft.com/kb/914288/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
O que podemos fazer para melhor estas informações?
Para proteger a sua privacidade, não inclua as informações de contacto nos comentários.
Obrigado! Os seus comentários serão utilizados para nos ajudar a melhorar o conteúdo do suporte. Para obter mais opções de assistência, visite a Home Page da Ajuda e Suporte.