Partilhar via


Processamento inteligente de consultas em bancos de dados SQL

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida SQL do AzureBase de Dados SQL no Microsoft Fabric

A família de recursos de processamento inteligente de consultas (IQP) inclui recursos com amplo impacto que melhoram o desempenho de cargas de trabalho existentes com o mínimo esforço de implementação a ser adotado. O gráfico a seguir detalha a família de recursos IQP e quando eles foram introduzidos pela primeira vez para o SQL Server. Todos os recursos do IQP estão disponíveis na Instância Gerenciada SQL do Azure e no Banco de Dados SQL do Azure. Alguns recursos dependem do nível de compatibilidade do banco de dados.

Diagrama da família de recursos de Processamento Inteligente de Consultas e quando eles foram introduzidos pela primeira vez no SQL Server.

Assista a este vídeo para obter uma visão geral do processamento inteligente de consultas:

 

Para demonstrações e exemplos de código de recursos de processamento inteligente de consultas (IQP) no GitHub, visite https://aka.ms/IQPDemos.

Você pode tornar as cargas de trabalho automaticamente qualificadas para o processamento inteligente de consultas habilitando o nível de compatibilidade do banco de dados aplicável ao banco de dados. Você pode definir isso usando Transact-SQL. Por exemplo:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 170;

A tabela a seguir detalha todos os recursos inteligentes de processamento de consultas, juntamente com qualquer requisito que eles tenham para o nível de compatibilidade do banco de dados. Para obter detalhes completos sobre todos os recursos do IQP, incluindo notas de versão e descrições mais detalhadas, consulte Recursos inteligentes de processamento de consultas em detalhes.

Recursos IQP para o Banco de Dados SQL do Azure e o SQL Server 2025 Preview

Funcionalidade IQP Com suporte no Banco de Dados SQL do Azure Com suporte no SQL Server 2025 (17.x) Preview Descrição
Proteção otimizada contra o Dia das Bruxas Não Sim, começando com o SQL Server 2025 (17.x) Preview com nível de compatibilidade 170 Reduz o tempdb consumo de espaço e melhora o desempenho da consulta ao não usar um spool para proteção contra o Dia das Bruxas.
Otimização opcional do plano de parâmetros (OPPO) Não Sim, começando com o SQL Server 2025 (17.x) Preview com nível de compatibilidade 170 Aproveita a infraestrutura de otimização de plano adaptativo (Multiplan) que foi introduzida com a melhoria Parameter Sensitive Plan Optimization (PSPO), que gera vários planos a partir de uma única declaração. O recurso pode escolher um plano mais ideal em tempo de execução com base em se um parâmetro é NULL OR NOT NULL, o que melhora o desempenho para consultas que, de outra forma, poderiam usar como padrão um desempenho abaixo do ideal para esses padrões de consulta.
Feedback sobre a estimativa de cardinalidade (EC) para expressões Não Sim, a partir do SQL Server 2025 (17.x) Preview com nível de compatibilidade 160 Estende o feedback do CE para melhorar as estimativas de cardinalidade para expressões repetidas em várias consultas, aprendendo com execuções anteriores e automaticamente aplicando as opções de modelos de CE apropriadas para execuções futuras dessas expressões.
OPTIMIZED_SP_EXECUTESQL Sim Sim, começando com o SQL Server 2025 (17.x) Preview Reduza efetivamente o impacto das tempestades de compilação. Uma tempestade de compilação refere-se a uma situação em que um grande número de consultas está sendo compilado simultaneamente, levando a problemas de desempenho e contenção de recursos. Habilite esse recurso para permitir que invocações de sp_executesql se comportem como objetos como procedimentos armazenados e gatilhos de uma perspetiva de compilação.

Recursos IQP para o Banco de Dados SQL do Azure e o SQL Server 2022

Funcionalidade IQP Com suporte no Banco de Dados SQL do Azure Com suporte no SQL Server 2022 (16.x) e versões posteriores Descrição
Junções adaptáveis (Modo de Processamento em Lote) Sim, começando com o nível de compatibilidade de banco de dados 140 Sim, a partir do SQL Server 2017 (14.x) com nível de compatibilidade de banco de dados 140 As junções adaptáveis selecionam dinamicamente um tipo de junção durante o tempo de execução com base nas linhas de entrada reais.
Contagem aproximada distinta Sim Sim, a partir do SQL Server 2019 (15.x) Forneça cenários aproximados COUNT DISTINCT de big data com o benefício de alto desempenho e baixo consumo de memória.
Percentil aproximado Sim, começando com o nível de compatibilidade de banco de dados 110 Sim, a partir do SQL Server 2022 (16.x) com nível de compatibilidade 110 Calcule percentis rapidamente para um grande conjunto de dados, com limites de erro aceitáveis baseados em classificação, para facilitar a tomada de decisões rápidas, utilizando funções de agregação de percentis aproximados.
Modo de lote no Rowstore Sim, começando com o nível de compatibilidade de banco de dados 150 Sim, a partir do SQL Server 2019 (15.x) com nível de compatibilidade 150 Forneça o modo de lote para cargas de trabalho DW relacionais ligadas à CPU sem exigir índices columnstore.
Feedback da estimativa de cardinalidade (CE) Sim, começando com o nível de compatibilidade de banco de dados 160 Sim, a partir do SQL Server 2022 (16.x) com nível de compatibilidade 160 Ajusta automaticamente as estimativas de cardinalidade para consultas repetidas para otimizar cargas de trabalho onde suposições CE ineficientes causam baixo desempenho da consulta. O feedback do CE identificará e usará uma suposição de modelo que melhor se adapte a uma determinada consulta e distribuição de dados para melhorar a qualidade do plano de execução da consulta.
Grau de paralelismo (DOP) feedback Sim, começando com o nível de compatibilidade de banco de dados 160 Sim, começando com o nível de compatibilidade de banco de dados 160 Ajusta automaticamente o grau de paralelismo para consultas repetidas para otimizar cargas de trabalho onde paralelismo ineficiente pode causar problemas de desempenho. Requer que o Repositório de Consultas esteja ativado.
Execução Intercalada Sim, começando com o nível de compatibilidade de banco de dados 140 Sim, a partir do SQL Server 2017 (14.x) com nível de compatibilidade de banco de dados 140 Usa a cardinalidade real da função de valor de tabela de várias instruções encontrada na primeira compilação em vez de uma suposição fixa.
Feedback de concessão de memória (Modo de lote) Sim, começando com o nível de compatibilidade de banco de dados 140 Sim, a partir do SQL Server 2017 (14.x) com nível de compatibilidade de banco de dados 140 Se uma consulta em modo de lote tiver operações que se derramam para o disco, adicione mais memória para execuções consecutivas. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de concessão de memória (Modo de linha) Sim, começando com o nível de compatibilidade de banco de dados 150 Sim, a partir do SQL Server 2019 (15.x) com nível de compatibilidade de banco de dados 150 Se uma consulta em modo de linha tiver operações que transbordam para o disco, adicione mais memória para execuções subsequentes. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de atribuição de memória (percentil) Sim, ativado em todas as bases de dados Sim, começando com o SQL Server 2022 (16.x)) com nível de compatibilidade de banco de dados 140 Aborda as limitações existentes de feedback de concessão de memória de forma não intrusiva, incorporando a execução de consultas anteriores para refinar os comentários.
Persistência de feedback do Memory Grant Sim, ativado em todas as bases de dados Sim, começando com o SQL Server 2022 (16.x)) com nível de compatibilidade de banco de dados 140 Fornece nova funcionalidade para persistir o feedback de concessão de memória. Requer que o Repositório de Consultas esteja ativado para a base de dados e no modo READ_WRITE.
Persistência do feedback do CE Sim, começando com o nível de compatibilidade de banco de dados 160 Sim, começando com o SQL Server 2022 (16.x)) com nível de compatibilidade de banco de dados 160 Requer que o Repositório de Consultas esteja ativado para a base de dados e no modo READ_WRITE.
Força de plano otimizada com o Query Store Sim Sim, começando com o SQL Server 2022 (16.x)). Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, consulte Forçar plano otimizado com o Repositório de Consultas.
Escalar UDF Inlining Sim, começando com o nível de compatibilidade de banco de dados 150 Sim, a partir do SQL Server 2019 (15.x) com nível de compatibilidade de banco de dados 150 UDFs escalares são transformadas em expressões relacionais equivalentes que são "embutidas" na consulta de chamada, muitas vezes resultando em ganhos de desempenho significativos.
Otimização do Plano Sensível a Parâmetros Sim, começando com o nível de compatibilidade de banco de dados 160 Sim, a partir do SQL Server 2022 (16.x) com nível de compatibilidade de banco de dados 160 A otimização do Plano Sensível a Parâmetros aborda o cenário em que um único plano armazenado em cache para uma consulta parametrizada não é ideal para todos os possíveis valores de parâmetros de entrada, por exemplo, distribuições de dados não uniformes.
Compilação adiada da variável de tabela Sim, começando com o nível de compatibilidade de banco de dados 150 Sim, a partir do SQL Server 2019 (15.x) com nível de compatibilidade de banco de dados 150 Usa a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma suposição fixa.

Recursos IQP para a Instância Gerenciada SQL do Azure

Funcionalidade IQP Com suporte na Instância Gerenciada SQL do Azure Descrição
Junções adaptáveis (Modo de Processamento em Lote) Sim, começando com o nível de compatibilidade de banco de dados 140 As junções adaptáveis selecionam dinamicamente um tipo de junção durante o tempo de execução com base nas linhas de entrada reais.
Contagem aproximada distinta Sim Forneça cenários aproximados COUNT DISTINCT de big data com o benefício de alto desempenho e baixo consumo de memória.
Percentil aproximado Sim, começando com o nível de compatibilidade de banco de dados 110 Calcule percentis rapidamente para um grande conjunto de dados, com limites de erro aceitáveis baseados em classificação, para facilitar a tomada de decisões rápidas, utilizando funções de agregação de percentis aproximados.
Modo de lote no Rowstore Sim, começando com o nível de compatibilidade de banco de dados 150 Forneça o modo de lote para cargas de trabalho DW relacionais ligadas à CPU sem exigir índices columnstore.
Feedback da estimativa de cardinalidade (CE) Sim, começando com o nível de compatibilidade de banco de dados 160 Ajusta automaticamente as estimativas de cardinalidade para consultas repetidas para otimizar cargas de trabalho onde suposições CE ineficientes causam baixo desempenho da consulta. O feedback do CE identificará e usará uma suposição de modelo que melhor se adapte a uma determinada consulta e distribuição de dados para melhorar a qualidade do plano de execução da consulta.
Grau de paralelismo (DOP) feedback Sim, começando com o nível de compatibilidade de banco de dados 160 na política de atualização Always-up-to-date. Não, para a política de atualização do SQL Server 2022. Ajusta automaticamente o grau de paralelismo para consultas repetidas para otimizar cargas de trabalho onde paralelismo ineficiente pode causar problemas de desempenho. Requer que o Repositório de Consultas esteja ativado.
Execução Intercalada Sim, começando com o nível de compatibilidade de banco de dados 140 Usa a cardinalidade real da função de valor de tabela de várias instruções encontrada na primeira compilação em vez de uma suposição fixa.
Feedback de concessão de memória (Modo de lote) Sim, começando com o nível de compatibilidade de banco de dados 140 Se uma consulta em modo de lote tiver operações que se derramam para o disco, adicione mais memória para execuções consecutivas. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de concessão de memória (Modo de linha) Sim, começando com o nível de compatibilidade de banco de dados 150 Se uma consulta em modo de linha tiver operações que transbordam para o disco, adicione mais memória para execuções subsequentes. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de atribuição de memória (percentil) Sim, começando com o nível de compatibilidade de banco de dados 160 Aborda as limitações existentes de feedback de concessão de memória de forma não intrusiva, incorporando a execução de consultas anteriores para refinar os comentários.
Concessão de memória, CE e persistência de feedback DOP Sim, começando com o nível de compatibilidade de banco de dados 160 Fornece nova funcionalidade para persistir o feedback de concessão de memória. O feedback CE e DOP é sempre persistente. Requer que o Repositório de Consultas esteja ativado para a base de dados e no modo READ_WRITE.
Força de plano otimizada com o Query Store Não Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, consulte Forçar plano otimizado com o Repositório de Consultas.
Escalar UDF Inlining Sim, começando com o nível de compatibilidade de banco de dados 150 UDFs escalares são transformadas em expressões relacionais equivalentes que são "embutidas" na consulta de chamada, muitas vezes resultando em ganhos de desempenho significativos.
Otimização do Plano Sensível a Parâmetros Sim, começando com o nível de compatibilidade de banco de dados 160 A Otimização do Plano de Sensibilidade a Parâmetros aborda o cenário em que um único plano armazenado em cache para uma consulta parametrizada não é ideal para todos os possíveis valores de parâmetros de entrada, por exemplo, distribuições de dados não uniformes.
Compilação adiada da variável de tabela Sim, começando com o nível de compatibilidade de banco de dados 150 Usa a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma suposição fixa.

Recursos IQP para SQL Server 2019

Funcionalidade IQP Com suporte no SQL Server 2019 (15.x) Descrição
Junções adaptáveis (Modo de Processamento em Lote) Sim, a partir do SQL Server 2017 (14.x) com nível de compatibilidade de banco de dados 140 As junções adaptáveis selecionam dinamicamente um tipo de junção durante o tempo de execução com base nas linhas de entrada reais.
Contagem aproximada distinta Sim Forneça cenários aproximados COUNT DISTINCT de big data com o benefício de alto desempenho e baixo consumo de memória.
Modo de lote no Rowstore Sim, começando com o nível de compatibilidade de banco de dados 150 Forneça o modo de lote para cargas de trabalho DW relacionais ligadas à CPU sem exigir índices columnstore.
Execução Intercalada Sim, começando com o nível de compatibilidade de banco de dados 140 Use a cardinalidade real da função de valor da tabela de várias instruções encontrada na primeira compilação em vez de uma suposição fixa.
Feedback de concessão de memória (Modo de lote) Sim, começando com o nível de compatibilidade de banco de dados 140 Se uma consulta em modo de lote tiver operações que se derramam para o disco, adicione mais memória para execuções consecutivas. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de concessão de memória (Modo de linha) Sim, começando com o nível de compatibilidade de banco de dados 150 Se uma consulta em modo de linha tiver operações que transbordam para o disco, adicione mais memória para execuções subsequentes. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Escalar UDF Inlining Sim, começando com o nível de compatibilidade de banco de dados 150 UDFs escalares são transformadas em expressões relacionais equivalentes que são "embutidas" na consulta de chamada, muitas vezes resultando em ganhos de desempenho significativos.
Compilação adiada da variável de tabela Sim, começando com o nível de compatibilidade de banco de dados 150 Use a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma suposição fixa.

Recursos IQP para SQL Server 2017

Funcionalidade IQP Com suporte no SQL Server 2017 (14.x) Descrição
Junções adaptáveis (Modo de Processamento em Lote) Sim, a partir do SQL Server 2017 (14.x) com nível de compatibilidade de banco de dados 140 As junções adaptáveis selecionam dinamicamente um tipo de junção durante o tempo de execução com base nas linhas de entrada reais.
Contagem aproximada distinta Sim Forneça cenários aproximados COUNT DISTINCT de big data com o benefício de alto desempenho e baixo consumo de memória.
Execução Intercalada Sim, começando com o nível de compatibilidade de banco de dados 140 Use a cardinalidade real da função de valor da tabela de várias instruções encontrada na primeira compilação em vez de uma suposição fixa.
Feedback de concessão de memória (Modo de lote) Sim, começando com o nível de compatibilidade de banco de dados 140 Se uma consulta em modo de lote tiver operações que se derramam para o disco, adicione mais memória para execuções consecutivas. Se uma consulta desperdiçar > 50% da memória alocada a ela, reduza o tamanho da concessão de memória para execuções consecutivas.

Requisito do Repositório de Consultas

Vários do conjunto de recursos inteligentes de processamento de consultas exigem que o Repositório de Consultas esteja habilitado para beneficiar o banco de dados do usuário. Para habilitar o Repositório de Consultas, consulte Habilitar o Repositório de Consultas.

Funcionalidade IQP Requer que o Repositório de Consultas esteja habilitado e READ_WRITE
Junções adaptáveis (Modo de Processamento em Lote) Não
Contagem aproximada distinta Não
Percentil aproximado Não
Modo de lote no Rowstore Não
Feedback da estimativa de cardinalidade (CE) Sim
Grau de paralelismo (DOP) feedback Sim
Execução Intercalada Não
Feedback de concessão de memória (Modo de lote) Não
Feedback de concessão de memória (Modo de linha) Não
Feedback de concessão de memória (modo Percentil e Persistência) Sim
Força de plano otimizada com o Query Store Sim
Escalar UDF Inlining Não
Otimização do Plano Sensível a Parâmetros Não, mas recomendado
Compilação adiada da variável de tabela Não