KB974006 - SQL Server consulta optimizador hotfix trace trace bandeira 4199 modelo de manutenção

INTRODUÇÃO

Versões do Microsoft SQL Server mais tarde do que o SQL Server 2000 Service Pack 3 (SP3) entregaram a maioria das hotfixes ao otimizador de consulta num estado off-by-default, de modo a evitar que os clientes de produção existentes vejam alterações de planos esperadas que possam causar regressões de desempenho. No início, cada hotfix foi entregue sob uma bandeira separada. Mais tarde, esta prática foi alterada de modo que a maioria das bandeiras foram combinadas sob uma única bandeira de traço (4199). Esta nova prática foi iniciada em várias versões a partir das seguintes atualizações:

  • SQL Server 2005 Service Pack 3 (SP3) Atualização Cumulativa 6

  • SQL Server 2008 Service Pack 1 (SP1) Pacote de Atualização Cumulativa 7

  • SQL Server 2008 R2 (RTM)

A bandeira de rastreio 4199 foi utilizada para recolher hotfixes que se destinavam a tornar-se on-by-default numa futura libertação, enquanto outros vestígios foram utilizados para situações em que uma correção não se destinava a tornar-se on-by-default na forma atual. A partir do SQL Server 2016 RTM, a definição de COMPATIBILITY_LEVEL de base de dados será utilizada para permitir a marca de traços 4199 hotfixes por padrão. Este artigo descreve a mecânica e a política de como os hotfixes que afetam o plano serão entregues para o SQL Server 2016 e versões posteriores.

Mais Informações

No SQL Server 2016, os hotfixes da bandeira de traço 4199 que são feitos para versões anteriores do SQL Server serão ativados na base de dados COMPATIBILITY_LEVEL 130 sem o aviso de rastreância 4199 ativado. A bandeira de rastreio 4199 será usada para lançar quaisquer futuras hotfixes DO SQL Server 2016 para bases de dados utilizando o nível de compatibilidade de 130. Uma vez que a bandeira de rastreio 4199 é recomendada apenas para clientes que estão a ver problemas de desempenho específicos, os clientes são aconselhados a remover o traço da bandeira 4199 depois de migrarem as suas bases de dados para o nível de compatibilidade mais recente, uma vez que o traço da bandeira 4199 será reutilizado para futuras correções que podem não se aplicar à sua aplicação e podem causar mudanças inesperadas no desempenho do plano num sistema de produção. Isto significa que estão ativados diferentes fixações de bandeira de traço 4199 para cada nível de compatibilidade suportado numa determinada libertação do produto. Oúltimo nível de compatibilidade já permite todas as correções anteriores sob a bandeira de traço 4199. Isto significa que a atualização de uma base de dados para o nível mais recente de compatibilidade e a remoção do bloco de rastreios 4199 ainda permite que todas as correções de uma carga de trabalho estava a alavancar antes da atualização da base de dados, mas não novas correções. Se, posteriormente, os clientes experimentarem problemas de desempenho de consulta, experimente ativar a opção de QUERY_OPTIMIZER_HOTFIXES ou a consulta ENABLE_QUERY_OPTIMIZER_HOTFIXES num ambiente de teste para determinar se os problemas estão resolvidos. Consulte a documentação sobre QUERY_OPTIMIZER_HOTFIXES

Nota Por padrão, as bases de dados criadas no SQL Server 2016 utilizam o nível de compatibilidade 130 e têm já uma nova lógica optimizador. A grande vantagem deste modelo é que reduz o risco para os sistemas de produção durante o processo de upgrade. Esta abordagem separa a instalação de uma nova versão principal do SQL Server do que permite ativar todas as novas alterações de processadores de consultas. Como as principais atualizações de versão alteram o formato do ficheiro e não são reversíveis, é uma boa ideia utilizar a definição COMPATIBILITY_LEVEL, pois isto permite que um cliente reduza rapidamente se um problema de desempenho do plano inesperado for encontrado durante uma atualização. Se um cliente encontrar uma mudança de plano inesperada que bloqueie uma atualização de aplicações, o cliente pode facilitar a situação aplicando uma dica de plano apropriado, utilizando a Loja de Consultas para forçar o plano anterior, ou pode facilitar a situação contactando o Suporte ao Cliente da Microsoft para ajudar com o problema a fornecer uma solução ou hotfix. Quando todos os problemas são diminuídos, a atualização pode continuar. Os clientes devem integrar esta capacidade no seu planeamento de upgrade para o SQL Server 2016. A tabela seguinte explica o modelo de como o traço da bandeira 4199 funcionará a partir do SQL Server 2016.

Definição

Nível de compatibilidade SQL

Bandeira de traço 4199

Otimador hotfixes antes do SQL Server 2016 RTM

Hotfixes optimizador após SQL Server 2016 RTM

1.

120

Fora

Deficientes

Deficientes

2.

120

Em

Habilidoso

Deficientes

3.

130

Fora

Habilitado pelo nível de compatibilidade

Deficientes

4.

130

Em

Habilitado pelo nível de compatibilidade

Habilitado pelo nível de compatibilidade

Nota A definição nº 3 é recomendada para clientes que estão recentemente a atualizar para o SQL Server 2016. Para grandes lançamentos após o SQL Server 2016, a Microsoft planeia continuar a utilizar este modelo de manutenção para hotfixes optimizador. Por predefinição, ou cada libertação, qualquer sinalização de 4199 hotfixes da versão anterior será ativada no nível de compatibilidade seguinte. Isto significa que o estado recomendado para os clientes após a migração para o nível mais recente de compatibilidade será ter o traço da bandeira 4199 desativado. Posteriores, os hotfixes utilizariam o traço da bandeira 4199 para permitir correções para clientes que têm de ativar esses hotfixes específicos numa aplicação. Os clientes são aconselhados a desativar o trace-flag 4199 depois de uma aplicação ser atualizada para o mais recente nível de compatibilidade para evitar que mudanças inesperadas de otimizadores futuros sejam ativadas numa aplicação inesperadamente. Que a atualização para o mais recente nível de compatibilidade e a remoção do traço da bandeira 4199 ainda permite que todas as correções que uma carga de trabalho estava a alavancar antes da atualização, mas não novas correções.

Nota Enquanto muitos hotfixes optimizador são habilitados sob a bandeira de traço 4199, alguns usam outras bandeiras de traço. A bandeira de traço 4199 cobriu historicamente bandeiras de traços que são amplamente aplicáveis e suscetíveis de serem ativadas por padrão numa futura libertação. As bandeiras de traços alternativos são utilizadas em hotfixes onde as condições são muito específicas para apenas alguns clientes, onde a correção pode causar regressões de desempenho em outros tipos de aplicações, ou onde a funcionalidade interna pode ver alterações antes de estar pronta para ser ativada para todos. A Microsoft continuará a utilizar outros vestígios de bandeiras, conforme necessário para o serviço do produto. Nota Este artigo centra-se no modelo de libertação de hotfixs de bandeira de traço 4199 no mais recente nível de compatibilidade do produto mais recente. (Na hora da publicação, este é SQL Server 2016.) Os hotfixes optimizadores podem ser lançados em versões mais antigas no mercado do SQL Server ou em níveis de compatibilidade mais baixos (120 ou anteriores) do SQL Server 2016. A Microsoft avaliará cada caso e determinará se deve usar o traço da bandeira 4199 ou uma bandeira de traço diferente. Como as alterações não-hotfix também são ativadas quando uma mudança é feita para um nível de compatibilidade posterior, não há nenhuma promessa específica de que não ocorrerão alterações de plano durante uma atualização (com ou sem o porte da bandeira 4199). Os clientes devem sempre testar cuidadosamente as alterações ao nível de compatibilidade para aplicações de produção e devem utilizar tecnologias de mitigação, como a Loja de Consultas, se houver um problema de desempenho relacionado com a escolha do plano. Para referência, a tabela que se segue lista os traços que foram utilizados para os hotfixes do processador de consulta antes da introdução da bandeira de traço 4199.

Artigo base de conhecimento da Microsoft

Bandeira de traço

318530

4101

940128

4102

919905

4103

920346

4104

920347

4105

922438

4106

923849

4107

926024

4108

926773

4109

933724

4110

934065

4111

946793

4115

950880

4116

948445

4117

942659

4119

953948

4120

942444

4121

946020

4122

948248

4124

949854

4125

959013

4126

953569

4127

955694 957872

4128

958547

4129

956686

4131

958006

4133

960770

4135*

SQL Server 2005

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 6 para o SQL Server 2005 Service Pack 3. Para obter mais informações sobre este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

974648 Pacote de atualização cumulativo 6 para SQL Server 2005 Service Pack 3Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2005. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

960598 O SQL Server 2005 constrói que foram lançados após o lançamento do SQL Server 2005 Service Pack 3Os hotfixes do Microsoft SQL Server 2005 são criados para pacotes específicos de serviços sql Server. Tem de aplicar um hotfix SQL Server 2005 Service Pack 3 a uma instalação do SQL Server 2005 Service Pack 3. Por predefinição, qualquer hotfix que seja fornecido num pacote de serviços SQL Server está incluído no próximo pacote de serviços sql Server.

SQL Server 2008

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 7. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

973601 Pacote de atualização cumulativo 7 para SQL Server 2008Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

956909 O SQL Server 2008 constrói que foram lançados após o lançamento do SQL Server 2008

SQL Server 2008 SP1

A correção para este problema foi lançada pela primeira vez na Cumulativa Update 7 para SQL Server 2008 Service Pack 1. Para obter mais informações sobre este pacote de atualização cumulativa, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

979065 Pacote de atualização cumulativo 7 para SQL Server 2008 Service Pack 1Nota Como as construções são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior lançamento de correção SQL Server 2008. Recomendamos que considere aplicar o mais recente lançamento de correção que contém este hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

970365 O SQL Server 2008 constrói que foram lançados após o lançamento do SQL Server 2008 Service Pack 1Os hotfixes do Microsoft SQL Server 2008 são criados para pacotes específicos de serviços sql Server. Tem de aplicar um hotfix SQL Server 2008 Service Pack 1 a uma instalação do SqL Server 2008 Service Pack 1. Por predefinição, qualquer hotfix que seja fornecido num pacote de serviços SQL Server está incluído no próximo pacote de serviços sql Server.

SQL Server 2008 R2

Na versão de lançamento do SQL Server 2008 R2, a bandeira de traço 4135 foi inadvertidamente omitida da lista de vestígios que podem ser controlados por -T4199. No entanto, isto foi corrigido na Atualização Cumulativa 1 para SQL Server 2008 R2. Assim, para esta construção e para edições suportadas pelo SQL Server 2005 e SQL Server 2008, -T4199 será suficiente para permitir que este e outros vestígios de bandeiras que estejam listados neste artigo.

SQL Server 2012 e versões posteriores

A bandeira de rastreio 4199 está incluída nas versões de lançamento do SQL Server 2012 e versões posteriores.

Como ativar o traço da bandeira 4199

Pode ativar o traço da bandeira 4199 no arranque ou numa sessão de utilizador. Esta bandeira de traço tem um efeito global ou ao nível da sessão. Para ativar o traço da bandeira 4199, utilize o comando DBCC TRACEON ou a utilização -T 4199 como parâmetro de arranque. Se for utilizado o DBCC TRACEON\TRACEOFF, este não regenera um novo plano em cache para procedimentos armazenados. Os planos podem estar em cache que foram criados sem a bandeira de traços. Para obter informações detalhadas sobre como ativar ou desativar as bandeiras de vestígios e para explicações sobre as bandeiras de traços globais e de nível de sessão, consulte os seguintes tópicos em SQL Server Books Online:

Referências

Para obter mais informações sobre o esquema de nomeação para atualizações do SQL Server, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

822499 Novo esquema de nomeação para pacotes de atualização de software do Microsoft SQL Server Para obter mais informações sobre a terminologia da atualização do software, clique no seguinte número de artigo para ver o artigo na Base de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×