INTRODUÇÃO
As 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 desativado por padrão para impedir que os clientes de produção existentes vejam as alterações esperadas no plano que podem causar regressões de desempenho. No início, cada hotfix era entregue com um sinalizador de rastreamento separado. Mais tarde, 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, começando com as seguintes atualizações:
- Atualização Cumulativa 6 do SQL Server 2005 Service Pack 3 (SP3)
- Pacote de Atualização Cumulativa 7 do SQL Server 2008 Service Pack 1 (SP1)
- SQL Server 2008 R2 (RTM)
O sinalizador de rastreamento 4199 foi usado para coletar hotfixes que deveriam ser ativados por padrão em uma versão futura, enquanto outros sinalizadores de rastreamento foram usados para situações nas quais uma correção não se destinava a ser ativada por padrão na forma atual. A partir do SQL Server 2016 RTM, a configuração de COMPATIBILITY_LEVEL do banco de dados será usada para habilitar os 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 o SQL Server 2016 e versões posteriores.
Mais informações
No SQL Server 2016, os hotfixes do sinalizador de rastreamento 4199 feitos em 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 lançar qualquer hotfix futuro do 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 enfrentando problemas de desempenho específicos, os clientes são aconselhados a remover o sinalizador de rastreamento 4199 depois de migrarem seus bancos de dados para o nível de compatibilidade mais recente, pois o sinalizador de rastreamento 4199 será reutilizado para correções futuras que podem não se aplicar ao seu aplicativo e podem causar alterações inesperadas no desempenho do plano em um sistema de produção. Isso significa que hotfixes do sinalizador de rastreamento 4199 diferentes são habilitados para cada nível de compatibilidade com suporte em 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 a atualização de um banco de dados para o nível de compatibilidade mais recente e a remoção do sinalizador de rastreamento 4199 ainda permitem 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 tiverem problemas de desempenho de consulta, experimente habilitar o QUERY_OPTIMIZER_HOTFIXES de opção no escopo do banco de dados ou a 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 têm a nova lógica do otimizador já habilitada.
A principal vantagem desse modelo é que ele reduz o risco para os 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 do arquivo e não são reversíveis, é uma boa ideia usar a configuração COMPATIBILITY_LEVEL, pois isso permite que o cliente faça o downgrade rapidamente se um problema inesperado de desempenho do plano for encontrado durante uma atualização. Se um cliente encontrar uma mudança de plano inesperada que bloqueia uma atualização de aplicativo, o cliente pode amenizar a situação aplicando uma dica de plano apropriada usando o Repositório de Consultas para forçar o plano anterior ou pode amenizar a situação entrando em contato com o Atendimento ao Cliente da Microsoft para ajudar com o problema e fornecer uma solução alternativa ou hotfix. Quando todos os problemas forem reduzidos, a atualização poderá continuar. Os clientes devem integrar essa funcionalidade ao planejamento de atualização para o 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 | Nível de compatibilidade do SQL | Sinalizador de rastreamento 4199 | Hotfixes do otimizador antes do RTM do SQL Server 2016 | Hotfixes do otimizador posteriores ao RTM do SQL Server 2016 |
|---|---|---|---|---|
| 1. | 120 | Desativado | Compartilhar | Compartilhar |
| 2. | 120 | Ativar | Habilitado | Compartilhar |
| 3. | 130 | Desativado | Habilitado pelo nível de compatibilidade | Compartilhar |
| 4. | 130 | Ativar | Habilitado pelo nível de compatibilidade | Habilitado pelo nível de compatibilidade |
Observação A configuração nº 3 é recomendada para clientes que estão atualizando recentemente para o SQL Server 2016.
Para versões principais após o SQL Server 2016, a Microsoft planeja continuar usando esse modelo de serviço para hotfixes de otimizadores. Por padrão, ou a cada versão, todos os hotfixes do sinalizador de rastreamento 4199 da versão anterior serão habilitados no próximo nível de compatibilidade. Isso significa que o estado recomendado para os clientes depois que eles migrarem para o nível de compatibilidade mais recente será ter o sinalizador de rastreamento 4199 desabilitado. Os hotfixes posteriores usariam o sinalizador de rastreamento 4199 para habilitar correções para os clientes que precisam 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 alterações futuras inesperadas do otimizador habilitadas em um aplicativo inesperadamente. A atualização para o nível de compatibilidade mais recente e a remoção do sinalizador de rastreamento 4199 ainda permitem 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 do otimizador estejam ativados no sinalizador de rastreamento 4199, alguns usam outros sinalizadores de rastreamento. O sinalizador de rastreamento 4199 historicamente abrange 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 quando as condições são muito específicas para apenas alguns clientes, quando a correção pode causar regressões de desempenho em outros tipos de aplicativos ou quando a funcionalidade interna pode sofrer alterações antes de estar pronta para ser habilitada para todos. A Microsoft continuará a usar outros sinalizadores de rastreamento conforme necessário para fazer a manutençã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, este é o SQL Server 2016.) Os hotfixes do otimizador 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 usará o sinalizador de rastreamento 4199 ou um sinalizador de rastreamento diferente. Como as alterações que não são de hotfix 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 o sinalizador de rastreamento 4199). Os clientes devem sempre testar as alterações no nível de compatibilidade cuidadosamente para aplicativos de produção e devem usar tecnologias de mitigação, como o Repositório de Consultas, se houver um problema de desempenho relacionado à escolha do plano.
Para referência, os seguintes sinalizadores de rastreamento foram usados para hotfixes do processador de consultas 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 de nível global ou de sessão. Para habilitar o sinalizador de rastreamento 4199, use o comando DBCC TRACEON ou use –T 4199 como um parâmetro de inicialização.
Se DBCC TRACEON\TRACEOFF for usado, isso não regenerará um novo plano armazenado 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 em nível de sessão, consulte os seguintes tópicos nos Manuais Online do SQL Server:
- DBCC TRACEON (Transact-SQL)
- Como configurar as opções de inicialização do servidor (SQL Server Configuration Manager)
Referências
Para obter mais informações sobre o esquema de nomenclatura para atualizações do SQL Server, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft:
822499
Novo esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL Server
Para obter informações adicionais sobre a terminologia da atualização de segurança, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
824684
Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft