Compartilhar via


Processamento inteligente de consultas em bancos de dados SQL

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de Dados SQL no Microsoft Fabric

A família de recursos IQP (processamento de consulta inteligente) inclui recursos de amplo impacto que melhoram o desempenho de cargas de trabalho existentes com esforço mínimo de implementação na adoção. 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 IQP estão disponíveis na Instância Gerenciada de 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 de consulta inteligente quando eles foram introduzidos pela primeira vez no SQL Server.

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

 

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

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

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;

A tabela a seguir detalha todos os recursos de processamento de consulta inteligente, juntamente com todos os requisitos 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 os recursos de processamento de consulta inteligente em detalhes.

Recursos do IQP para o Banco de Dados SQL do Azure e a Versão Prévia do SQL Server 2025

Recurso IQP Com suporte no Banco de Dados SQL do Azure Com suporte na versão prévia do SQL Server 2025 (17.x) Descrição
Proteção otimizada do Halloween Não Sim, começando com a versão prévia do SQL Server 2025 (17.x) com o 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 de Halloween.
Otimização de Plano de Parâmetro Opcional (OPPO) Não Sim, começando com a versão prévia do SQL Server 2025 (17.x) com o nível de compatibilidade 170 Aproveita a infraestrutura de otimização de plano adaptável (Multiplan) que foi introduzida com a melhoria da PSPO (Otimização de Plano Sensível a Parâmetros), que gera vários planos de uma única instrução. O recurso pode escolher uma estratégia ideal durante o tempo de execução, com base em se um parâmetro é NULL OR NOT NULL, o que melhora o desempenho de consultas que, de outra forma, poderiam cair em um desempenho abaixo do ideal para esses padrões de consulta.
Comentários sobre estimativa de cardinalidade (CE) para expressões Não Sim, começando com a versão prévia do SQL Server 2025 (17.x) com o nível de compatibilidade 160 Estende o feedback de CE para melhorar as estimativas de cardinalidade de expressões repetitivas em consultas, aprendendo com execuções anteriores e escolhendo automaticamente opções de modelo CE apropriadas para execuções futuras dessas expressões.
OPTIMIZED_SP_EXECUTESQL Sim Sim, começando com a versão prévia do SQL Server 2025 (17.x) Reduza o impacto das tempestades de compilação de forma eficaz. Uma tempestade de compilação refere-se a uma situação em que um grande número de consultas estão sendo compiladas simultaneamente, levando a problemas de desempenho e contenção de recursos. Habilite esse recurso para permitir que invocações sp_executesql se comportem como objetos, como procedimentos armazenados e gatilhos de uma perspectiva de compilação.

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

Recurso IQP Com suporte no Banco de Dados SQL do Azure Com suporte no SQL Server 2022 (16.x) Descrição
Junções adaptáveis (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior Sim, no SQL Server 2017 (14.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 As junções adaptáveis selecionam automaticamente um tipo de junção durante o runtime com base nas linhas de entrada reais.
Distinção de contagem aproximada Sim Sim, no SQL Server 2019 (versão 15.x ou posteriores) Forneça estimativas aproximadas COUNT DISTINCT para cenários de Big Data com o benefício de alto desempenho e baixo consumo de memória.
Percentil aproximado Sim, com compatibilidade do banco de dados de nível 110 ou superior Sim, no SQL Server 2022 (16.x ou versões posteriores) com nível de compatibilidade 110 Calcule rapidamente percentis para um conjunto de dados grande com limites de erro aceitáveis baseados em classificação para ajudar a tomar decisões rápidas usando funções de agregação de percentil aproximadas.
Modo de Lote no Rowstore Sim, com compatibilidade do banco de dados de nível 150 ou superior Sim, no SQL Server 2019 (15.x ou versões posteriores) com nível de compatibilidade 150 Forneça o modo de lote para cargas de trabalho de DW relacionais vinculados à CPU sem exigir índices columnstore.
Feedback da CE (estimativa de cardinalidade) Sim, com compatibilidade do banco de dados de nível 160 ou superior Sim, no SQL Server 2022 (16.x ou versões posteriores) com nível de compatibilidade 160 Ajusta automaticamente as estimativas de cardinalidade para consultas repetidas de modo a otimizar cargas de trabalho em que pressuposições de CE ineficientes causam baixo desempenho da consulta. Os comentários da CE identificarão e usarão uma suposição de modelo mais adequada a uma determinada distribuição de consulta e de dados para aprimorar a qualidade do plano de execução de consulta.
Comentários de DOP (grau de paralelismo) Sim, em versão prévia, a partir nível de compatibilidade de banco de dados 160 ou superior Sim, no SQL Server 2022 (16.x ou versões posteriores) com nível de compatibilidade 160 Ajusta automaticamente o grau de paralelismo de consultas repetidas de modo a otimizar para cargas de trabalho em que o paralelismo ineficiente pode causar problemas de desempenho. Requer que o Repositório de Consultas esteja habilitado.
Execução intercalada Sim, com compatibilidade do banco de dados de nível 140 ou superior Sim, no SQL Server 2017 (14.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 Usa a cardinalidade real da função com valor de tabela de várias instruções encontrada na primeira compilação em vez de uma estimativa fixa.
Feedback de concessão de memória (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior Sim, no SQL Server 2017 (14.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 Se uma consulta de modo de lote tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para 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, com compatibilidade do banco de dados de nível 150 ou superior Sim, no SQL Server 2019 (15.x ou versões posteriores) com compatibilidade do banco de dados de nível 150 Se uma consulta de modo de linha tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de concessão de memória (Percentil) Sim, habilitado em todos os bancos de dados Sim, no SQL Server 2022 (16.x ou versões posteriores) com compatibilidade do banco de dados de nível 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 o feedback.
Persistência de feedback de concessão de memória Sim, habilitado em todos os bancos de dados Sim, no SQL Server 2022 (16.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 Fornece uma nova funcionalidade para persistir o feedback de concessão de memória. O uso do Repositório de Consultas deve estar habilitado para o banco de dados e no modo READ_WRITE.
Persistência de feedback da CE Sim, com compatibilidade do banco de dados de nível 160 ou superior Sim, no SQL Server 2022 (16.x e versões posteriores) com nível de compatibilidade do banco de dados 160 O uso do Repositório de Consultas deve estar habilitado para o banco de dados e no modo READ_WRITE.
Persistência de feedback do DOP Sim, em versão prévia, a partir nível de compatibilidade de banco de dados 160 ou superior Sim, no SQL Server 2022 (16.x e versões posteriores) com nível de compatibilidade do banco de dados 160 O uso do Repositório de Consultas deve estar habilitado para o banco de dados e no modo READ_WRITE.
Forçamento de plano otimizado com Query Store Sim Sim, no SQL Server 2022 (16.x ou versões posteriores). Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, confira Imposição de plano otimizado com Repositório de Consultas.
Inlining de UDF escalar Sim, com compatibilidade do banco de dados de nível 150 ou superior Sim, no SQL Server 2019 (15.x ou versões posteriores) com compatibilidade do banco de dados de nível 150 Os UDFs escalares são transformados em expressões relacionais equivalentes que são "embutidas" na consulta que fez a chamada, geralmente resultando em ganhos significativos de desempenho.
Otimização do plano sensível de parâmetro Sim, com compatibilidade do banco de dados de nível 160 ou superior Sim, no SQL Server 2022 (16.x e versões posteriores) com nível de compatibilidade do 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 valores de parâmetro de entrada possíveis, por exemplo, distribuições de dados não uniformes.
Compilação Adiada de Variável da Tabela Sim, com compatibilidade do banco de dados de nível 150 ou superior Sim, no SQL Server 2019 (15.x ou versões posteriores) com compatibilidade do banco de dados de nível 150 Usa a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma estimativa fixa.

Recursos IQP para a Instância Gerenciada de SQL do Azure

Recurso IQP Com suporte na Instância Gerenciada de SQL do Azure Descrição
Junções adaptáveis (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior As junções adaptáveis selecionam automaticamente um tipo de junção durante o runtime com base nas linhas de entrada reais.
Distinção de contagem aproximada Sim Forneça estimativas aproximadas COUNT DISTINCT para cenários de Big Data com o benefício de alto desempenho e baixo consumo de memória.
Percentil aproximado Sim, com compatibilidade do banco de dados de nível 110 ou superior Calcule rapidamente percentis para um conjunto de dados grande com limites de erro aceitáveis baseados em classificação para ajudar a tomar decisões rápidas usando funções de agregação de percentil aproximadas.
Modo de Lote no Rowstore Sim, com compatibilidade do banco de dados de nível 150 ou superior Forneça o modo de lote para cargas de trabalho de DW relacionais vinculados à CPU sem exigir índices columnstore.
Feedback da CE (estimativa de cardinalidade) Sim, com compatibilidade do banco de dados de nível 160 ou superior Ajusta automaticamente as estimativas de cardinalidade para consultas repetidas de modo a otimizar cargas de trabalho em que pressuposições de CE ineficientes causam baixo desempenho da consulta. Os comentários da CE identificarão e usarão uma suposição de modelo mais adequada a uma determinada distribuição de consulta e de dados para aprimorar a qualidade do plano de execução de consulta.
Comentários de DOP (grau de paralelismo) Nenhum Ajusta automaticamente o grau de paralelismo de consultas repetidas de modo a otimizar para cargas de trabalho em que o paralelismo ineficiente pode causar problemas de desempenho. Requer que o Repositório de Consultas esteja habilitado.
Execução intercalada Sim, com compatibilidade do banco de dados de nível 140 ou superior Usa a cardinalidade real da função com valor de tabela de várias instruções encontrada na primeira compilação em vez de uma estimativa fixa.
Feedback de concessão de memória (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior Se uma consulta de modo de lote tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para 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, com compatibilidade do banco de dados de nível 150 ou superior Se uma consulta de modo de linha tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Feedback de concessão de memória (Percentil) Sim, com compatibilidade do banco de dados de nível 160 ou superior 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 o feedback.
Persistência de feedback de concessão de memória, CE e DOP Sim, com compatibilidade do banco de dados de nível 160 ou superior Fornece uma nova funcionalidade para persistir o feedback de concessão de memória. O feedback de CE e DOP é sempre persistente. O uso do Repositório de Consultas deve estar habilitado para o banco de dados e no modo READ_WRITE.
Forçamento de plano otimizado com Query Store Nenhum Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, confira Imposição de plano otimizado com Repositório de Consultas.
Inlining de UDF escalar Sim, com compatibilidade do banco de dados de nível 150 ou superior Os UDFs escalares são transformados em expressões relacionais equivalentes que são "embutidas" na consulta que fez a chamada, geralmente resultando em ganhos significativos de desempenho.
Otimização do plano sensível de parâmetro Sim, com compatibilidade do banco de dados de nível 160 ou superior A Otimização do Plano de Confidencialidade de Parâmetro aborda o cenário em que um único plano armazenado em cache para uma consulta parametrizada não é ideal para todos os valores de parâmetro de entrada possíveis, por exemplo, distribuições de dados não uniformes.
Compilação Adiada de Variável da Tabela Sim, com compatibilidade do banco de dados de nível 150 ou superior Usa a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma estimativa fixa.

Recursos do IQP para SQL Server 2019

Recurso IQP Com suporte no SQL Server 2019 (15.x) Descrição
Junções adaptáveis (Modo de Lote) Sim, no SQL Server 2017 (14.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 As junções adaptáveis selecionam automaticamente um tipo de junção durante o runtime com base nas linhas de entrada reais.
Distinção de contagem aproximada Sim Forneça estimativas aproximadas COUNT DISTINCT para cenários de Big Data com o benefício de alto desempenho e baixo consumo de memória.
Modo de Lote no Rowstore Sim, com compatibilidade do banco de dados de nível 150 ou superior Forneça o modo de lote para cargas de trabalho de DW relacionais vinculados à CPU sem exigir índices columnstore.
Execução intercalada Sim, com compatibilidade do banco de dados de nível 140 ou superior Use a cardinalidade real da função com valor de tabela de várias instruções encontrada na primeira compilação em vez de uma estimativa fixa.
Feedback de concessão de memória (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior Se uma consulta de modo de lote tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para 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, com compatibilidade do banco de dados de nível 150 ou superior Se uma consulta de modo de linha tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para ela, reduza o tamanho da concessão de memória para execuções consecutivas.
Inlining de UDF escalar Sim, com compatibilidade do banco de dados de nível 150 ou superior Os UDFs escalares são transformados em expressões relacionais equivalentes que são "embutidas" na consulta que fez a chamada, geralmente resultando em ganhos significativos de desempenho.
Compilação Adiada de Variável da Tabela Sim, com compatibilidade do banco de dados de nível 150 ou superior Use a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma estimativa fixa.

Recursos do IQP para SQL Server 2017

Recurso IQP Com suporte no SQL Server 2017 (14.x) Descrição
Junções adaptáveis (Modo de Lote) Sim, no SQL Server 2017 (14.x ou versões posteriores) com compatibilidade do banco de dados de nível 140 As junções adaptáveis selecionam automaticamente um tipo de junção durante o runtime com base nas linhas de entrada reais.
Distinção de contagem aproximada Sim Forneça estimativas aproximadas COUNT DISTINCT para cenários de Big Data com o benefício de alto desempenho e baixo consumo de memória.
Execução intercalada Sim, com compatibilidade do banco de dados de nível 140 ou superior Use a cardinalidade real da função com valor de tabela de várias instruções encontrada na primeira compilação em vez de uma estimativa fixa.
Feedback de concessão de memória (Modo de Lote) Sim, com compatibilidade do banco de dados de nível 140 ou superior Se uma consulta de modo de lote tiver operações que são despejadas no disco, aumente a memória para execuções consecutivas. Se uma consulta gastar > 50% da memória alocada para ela, reduza o tamanho da concessão de memória para execuções consecutivas.

Requisito do Repositório de Consultas

Várias opções do conjunto de recursos de processamento de consulta inteligente exigem que o Repositório de Consultas esteja habilitado para beneficiar o banco de dados de usuário. Para habilitar o Repositório de Consultas, confira Habilitar o Repositório de Consultas.

Recurso IQP Requer que o Repositório de Consultas seja habilitado e READ_WRITE
Junções adaptáveis (Modo de Lote) Não
Distinção de contagem aproximada Não
Percentil aproximado Não
Modo de Lote no Rowstore Não
Feedback da CE (estimativa de cardinalidade) Sim
Comentários de DOP (grau de paralelismo) 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 de percentil e de persistência) Sim
Forçamento de plano otimizado com Query Store Sim
Inlining de UDF escalar Não
Otimização do plano sensível de parâmetro Não, mas é recomendado
Compilação Adiada de Variável da Tabela Não