CORRECÇÃO: Um fraco desempenho quando utilizar variáveis de tabela no SQL Server 2012 ou 2014 do SQL Server

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: 2952444
Sintomas
Quando preencher uma variável de tabela com o número de linhas e, em seguida, anexá-lo com outras tabelas, o otimizador de consulta pode escolher um plano de consulta ineficazes, que pode conduzir a diminuir o desempenho da consulta.
Resolução
Depois de aplicar esta correcção, pode activar o sinalizador de rastreio 2453 para permitir que uma variável da tabela accionar recompile quando suficiente número de linhas é alterado. Isto pode permitir o otimizador de consulta seleccionar um plano mais eficaz.

O problema foi corrigido pela primeira vez na actualização cumulativa ou / e Service Packs para o SQL Server.

Actualização cumulativa 3 para SQL Server 2014

Acerca de actualizações cumulativas para o SQL Server

Cada nova actualização cumulativa para o SQL Server contém todas as correcções e todas as correcções de segurança que foram incluídas na anterior actualização cumulativa. Verifique as actualizações cumulativas mais recentes para o SQL Server:

Service pack 2 para SQL Server 2012

Sobre os Service packs para o SQL Server

Service packs são cumulativos. Cada novo service pack contém todas as correcções incluídas em service packs anteriores, bem como quaisquer novas correcções. A nossa recomendação é aplicar o service pack mais recente e a actualização cumulativa mais recente desse service pack. Não é necessário instalar um service pack anterior antes de instalar o service pack mais recente. Utilize o quadro 1 no seguinte artigo para localizar mais informações sobre o service pack mais recente e a actualização cumulativa mais recente:

Mais Informação
Quando utiliza uma variável de tabela num procedimento batch ou, a consulta é compilada e optimizada para o estado inicial vazio da variável da tabela. Se esta variável da tabela é povoada com várias linhas em tempo de execução, o plano de consulta pré-compilada poderá já não ser ideal. Por exemplo, a consulta pode ser aderir a uma variável de tabela com ciclo aninhado uma vez que é normalmente mais eficiente para pequeno número de linhas. Este plano de consulta pode ser ineficiente se a variável da tabela tem milhões de linhas. Uma associação de hash pode ser uma opção melhor em tais condições. Para obter um novo plano de consulta, tem de ser novamente compiladas. Ao contrário de outro utilizador ou tabelas temporárias, no entanto, alteração de contagem de linha numa variável da tabela não accionar uma recompilação da consulta. Normalmente, pode resolver este problema com OPTION (RECOMPILE), que tem o respectivo custo geral.
O sinalizador de rastreamento 2453 permite que o benefício da recompilação da consulta sem OPTION (RECOMPILE). Este sinalizador de rastreio difere do OPTION (RECOMPILE) em dois aspectos principais.
(1) utiliza o mesmo limite de contagem de linha como outras tabelas. A consulta não necessita de ser elaboradas para cada execução ao contrário OPTION (RECOMPILE). A autorização activasse recompile apenas quando a alteração de contagem de linhas excede o limite predefinido.
(2) opção (RECOMPILE) força a consulta para observar parâmetros e optimizar a consulta para os mesmos. Este sinalizador de rastreio não força a observação de parâmetro.

Nota este sinalizador de rastreio tem de ser Sucessivamente em tempo de execução. Não é possível utilizar este sinalizador de rastreio com QUERYTRACEON. Este sinalizador de rastreio tem de ser utilizado com precaução porque pode aumentar o número de recompilações de consulta que poderá custar mais de poupança de uma melhor optimização de consulta.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 2952444 - Última Revisão: 02/22/2016 07:06:00 - Revisão: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtpt
Comentários