O desempenho diminui quando você executa um SELECT... A consulta após atualizar para o SQL Server 2012 e versões posteriores

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3144525
Sintomas
Após a atualização do Microsoft SQL Server 2008 R2 ou uma versão anterior ao SQL Server 2012 ou uma versão posterior, você pode perceber queSELECT... PARA as consultas que contêm funções definidas pelo usuário levam mais tempo para concluir que nas versões anteriores.
Causa
Esse problema ocorre porque essa Selecione... PARA as instruções que contêm funções definidas pelo usuário (UDFs) são operações totalmente conectadas e levar mais tempo para ser concluída no SQL Server 2012 e versões posteriores.

Observação: Selecione qualquer ... PARA as instruções que contêm funções definidas pelo usuário são operações registradas de forma mínima em versões anteriores (SQL Server 2008 R2 e versões anteriores). Essa alteração foi introduzida para certificar-se de integridade de dados, como a função definida pelo usuário pode executar operações de leitura/gravação no mesmo objeto e pode causar corrupção de dados se o log mínimo está habilitado.
Como Contornar
Se selecionar as funções definidas pelo usuário que são usadas no ... EM instrução não realizar nenhuma operação de acesso de dados, você pode especificar a cláusula SCHEMABINDING para as funções definidas pelo usuário, que definirá a propriedade derivada de UserDataAccess para as funções definidas pelo usuário para 0. Após essa alteração, selecione ... NO instruções serão minimamente registradas. Para obter mais informações, consulte o exemplo no blog para obter um exemplo sobre como usar SCHEMABINDING.

Observação: Se a instrução ainda faz referência a pelo menos uma função definida pelo usuário com esta propriedade definida como 1, a operação é totalmente conectada.
Mais Informações
O exemplo de código a seguir demonstra a diferença de comportamento entre o SQL Server 2008 R2 e SQL Server 2012 ou 2014:

create database DB1gouse DB1gocreate function dbo.MyTrim (@name as varchar(100))returns varchar (100)asbeginreturn (RTRIM(ltrim(@name)))endgocreate table dbo.tab_prod (c1 int, c2 varchar(10))godeclare @a int set @a = 1while @a <= 100000begin insert into tab_prodvalues (@a , '  test ')set @a = @a + 1endbegin transelect  *,  dbo.mytrim(c2) as trimc2 into tab_test from tab_prod

A tabela a seguir compara o tempo de CPU para uma operação em select no SQL Server 2008 R2 com que 2014 do SQL Server:

VersãoTempo de execução (tempo de CPU)
SQL Server 2008 R2719 ms
SQL Server 20141360 ms

A tabela a seguir compara o uso do log de transação para uma operação em select no SQL Server 2008 R2 com que 2014 do SQL Server:

VersãoNome do banco de dadosTamanho do registro (MB)Espaço de log usado (%)Status
SQL Server 2008 R2DB10.742187551.578950
SQL Server 2014DB132.1796938.44380
Observação importante Os resultados dessas tabelas são apenas um exemplo da alteração no comportamento entre o SQL Server 2008 R2 e SQL Server 2014 e muito específicos para o ambiente de laboratório que foi usado para este teste. A diferença de desempenho real no seu ambiente dependerá do hardware que está executando a instância do SQL.
Observação: este é um artigo de “PUBLICAÇÃO RÁPIDA” criado diretamente pela organização de suporte da Microsoft. As informações aqui contidas são fornecidas no presente estado, em resposta a questões emergentes. Como resultado da velocidade de disponibilização, os materiais podem incluir erros tipográficos e poderão ser revisados a qualquer momento, sem aviso prévio. Consulte os Termos de Uso para ver outras informações.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3144525 - Última Revisão: 03/03/2016 22:38:00 - Revisão: 1.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3144525 KbMtpt
Comentários