INTRODUÇÃO
Versões do Microsoft SQL Server posteriores ao SQL Server 2000 Service Pack 3 (SP3) entregaram a maioria dos hotfixes ao otimizador de consulta em um estado fora do padrão para impedir que os clientes de produção existentes viam alterações de planos esperadas que poderiam causar regressões de desempenho. No início, cada hotfix era entregue sob um sinalizador de rastreamento separado. Posteriormente, essa prática foi alterada para que a maioria dos sinalizadores fosse combinada sob um único sinalizador de rastreamento (4199). Essa 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 Pacote cumulativo 7 do Service Pack 1 (SP1) 2008
-
SQL Server 2008 R2 (RTM)
O sinalizador de rastreamento 4199 foi usado para coletar hotfixes que se destinavam a se tornar on-by-default em uma versão futura, enquanto outros sinalizadores de rastreamento foram usados para situações em que uma correção não se destinava a se tornar on-by-default no formulário atual. A partir SQL Server RTM 2016, a configuração COMPATIBILITY_LEVEL banco de dados será usada para habilitar hotfixes relacionados ao sinalizador de rastreamento 4199 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 SQL Server 2016 e versões posteriores.
Informações adicionais
No SQL Server 2016, os hotfixes do sinalizador de rastreamento 4199 que são feitos para versões anteriores do SQL Server serão habilitados no banco de dados COMPATIBILITY_LEVEL 130 sem o sinalizador de rastreamento 4199 habilitado. O sinalizador de rastreamento 4199 será usado para liberar quaisquer hotfixes futuros SQL Server 2016 para bancos de dados usando o nível de compatibilidade 130. Como o sinalizador de rastreamento 4199 é recomendado apenas para clientes que estão vendo problemas de desempenho específicos, os clientes são aconselhados a remover o sinalizador de rastreamento 4199 depois que migrarem seus bancos de dados para o nível de compatibilidade mais recente porque o sinalizador de rastreamento 4199 será reutilizados para correções futuras que podem não se aplicar ao aplicativo e podem causar alterações inesperadas no desempenho do plano em um sistema de produção. Isso significa que diferentes hotfixes de sinalizador de rastreamento 4199 estão habilitados para cada nível de compatibilidade compatível com uma determinada versão do produto. O nível de compatibilidade mais recente já habilita todas as correções anteriores sob o sinalizador de rastreamento 4199. Isso significa que atualizar um banco de dados para o nível de compatibilidade mais recente e remover o sinalizador de rastreamento 4199 ainda habilita todas as correções que uma carga de trabalho estava aproveitando antes da atualização do banco de dados, mas não novas correções. Se, posteriormente, os clientes experimentarem problemas de desempenho de consulta, experimente habilite a opção com escopo de banco de dados QUERY_OPTIMIZER_HOTFIXES ou dica de consulta ENABLE_QUERY_OPTIMIZER_HOTFIXES em um ambiente de teste para determinar se os problemas foram resolvidos. Consulte a documentação sobre QUERY_OPTIMIZER_HOTFIXES.
Observação Por padrão, os bancos de dados criados no SQL Server 2016 usam o nível de compatibilidade 130 e já têm uma nova lógica otimizativa habilitada.
A principal vantagem desse modelo é que ele reduz o risco para sistemas de produção durante o processo de atualização. Essa abordagem separa a instalação de uma nova versão principal do SQL Server da habilitação automática de todas as novas alterações do processador de consulta. Como as atualizações de versão principais alteram o formato de arquivo e não são reversíveis, é uma boa ideia usar a configuração de COMPATIBILITY_LEVEL, pois isso permite que um cliente faça um downgrade rápido se um problema inesperado de desempenho do plano for encontrado durante uma atualização. Se um cliente encontrar uma alteração inesperada de plano que bloqueia uma atualização de aplicativo, o cliente pode facilitar a situação aplicando uma dica de plano apropriada usando o Armazenamento de Consultas para forçar o plano anterior ou pode facilitar a situação contatando o Suporte ao Cliente da Microsoft para ajudar com o problema para fornecer uma solução alternativa ou hotfix. Quando todos os problemas são diminuidos, a atualização pode continuar. Os clientes devem integrar esse recurso ao planejamento de atualização para SQL Server 2016. A tabela a seguir explica o modelo de como o sinalizador de rastreamento 4199 funcionará a partir do SQL Server 2016.
Configuração |
SQL nível de compatibilidade |
Sinalizador de rastreamento 4199 |
Hotfixes otimizador antes SQL Server RTM 2016 |
Hotfixes otimizados após SQL Server RTM 2016 |
---|---|---|---|---|
1. |
120 |
Desativado |
Desabilitado |
Desabilitado |
2. |
120 |
Ativado |
Habilitada |
Desabilitado |
3. |
130 |
Desativado |
Habilitado por nível de compatibilidade |
Desabilitado |
4. |
130 |
Ativado |
Habilitado por nível de compatibilidade |
Habilitado por nível de compatibilidade |
Observação A configuração nº 3 é recomendada para clientes que estão atualizando para SQL Server 2016.
Para versões principais após SQL Server 2016, a Microsoft planeja continuar usando esse modelo de manutenção para hotfixes otimizados. Por padrão, ou em cada versão, qualquer sinalizador de rastreamento 4199 hotfixes da versão anterior será habilitado no próximo nível de compatibilidade. Isso significa que o estado recomendado para os clientes após a migração para o nível de compatibilidade mais recente será ter o sinalizador de rastreamento 4199 desabilitado. Hotfixes posteriores usariam o sinalizador de rastreamento 4199 para habilitar correções para clientes que têm que habilitar esses hotfixes específicos em um aplicativo. Os clientes são aconselhados a desabilitar o sinalizador de rastreamento 4199 depois que um aplicativo é atualizado para o nível de compatibilidade mais recente para evitar que alterações futuras inesperadas do otimizador sejam habilitadas inesperadamente em um aplicativo. Essa atualização para o nível de compatibilidade mais recente e a remoção do sinalizador de rastreamento 4199 ainda permite todas as correções que uma carga de trabalho estava aproveitando antes da atualização, mas não novas correções.Observação Embora muitos hotfixes otimizador sejam habilitados sob o sinalizador de rastreamento 4199, alguns usam outros sinalizadores de rastreamento. Sinalizador de rastreamento 4199 historicamente coberto sinalizadores de rastreamento que são amplamente aplicáveis e provavelmente serão habilitados por padrão em uma versão futura. Sinalizadores de rastreamento alternativos são usados 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 aplicativos ou onde a funcionalidade interna pode ver alterações antes de estar pronta para se tornar habilitada para todos. A Microsoft continuará a usar outros sinalizadores de rastreamento conforme necessário para o serviço do produto.
Observação Este artigo se concentra no modelo para liberar hotfixes do sinalizador de rastreamento 4199 no nível de compatibilidade mais recente do produto mais recente. (No momento da publicação, isso é SQL Server 2016.) Os hotfixes otimizador podem ser lançados em versões mais antigas no mercado de SQL Server ou em níveis de compatibilidade inferiores (120 ou anteriores) de SQL Server 2016. A Microsoft avaliará cada caso e determinará se deve usar o sinalizador de rastreamento 4199 ou um sinalizador de rastreamento diferente. Como alterações não hotfixes também são habilitadas quando uma movimentação é feita para um nível de compatibilidade posterior, não há nenhuma promessa específica de que nenhuma alteração de plano ocorrerá durante uma atualização (com ou sem sinalizador de rastreamento 4199). Os clientes sempre devem testar as alterações no nível de compatibilidade cuidadosamente para aplicativos de produção e devem usar tecnologias de mitigação, como o Armazenamento de Consultas, se houver um problema de desempenho relacionado à escolha de plano. Para referência, os seguintes sinalizadores de rastreamento foram usados para hotfixes do processador de consulta antes da introdução do sinalizador de rastreamento 4199:4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.
SQL Server 2012 e versões posteriores
O sinalizador de rastreamento 4199 está incluído nas versões de lançamento do SQL Server 2012 e versões posteriores.
Como habilitar o sinalizador de rastreamento 4199
Você pode habilitar o sinalizador de rastreamento 4199 na inicialização ou em uma sessão do usuário. Esse sinalizador de rastreamento tem efeito no nível global ou no nível da sessão. Para habilitar o sinalizador de rastreamento 4199, use o comando TRACEON DBCC ou use –T 4199 como parâmetro de inicialização.
Se DBCC TRACEON\TRACEOFF for usado, isso não regenerará um novo plano em cache para procedimentos armazenados. Os planos podem estar em cache que foram criados sem o sinalizador de rastreamento. Para obter informações detalhadas sobre como habilitar ou desabilitar sinalizadores de rastreamento e para obter explicações sobre sinalizadores de rastreamento globais e de nível de sessão, consulte os seguintes tópicos no SQL Server Books Online:Referências
Para obter mais informações sobre o esquema de nomenis SQL Server atualizações, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento da Microsoft:
822499 Novo esquema de nomenização para Microsoft SQL Server de atualização de software Para obter mais informações sobre a terminologia de atualização de software, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento da Microsoft:
824684 Descrição da terminologia padrão usada para descrever atualizações de software da Microsoft