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 que representa os recursos na família de processamento de consulta inteligente e quando eles foram introduzidos 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 = 170;

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 o SQL Server 2025

Recurso IQP Com suporte no Banco de Dados SQL do Azure Com suporte no SQL Server 2025 (17.x) Description
Otimização de Plano de Parâmetro Opcional (OPPO) No Sim, começando com o 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 um plano mais adequado durante o tempo de execução com base em se um parâmetro é NULL OR NOT NULL ou não, o que melhora o desempenho de consultas que, de outra forma, poderiam adotar desempenho abaixo do ideal para esses padrões de consulta.
Comentários sobre estimativa de cardinalidade (CE) para expressões No Sim, começando com o 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 Yes Sim, começando com o SQL Server 2025 (17.x) Reduza o impacto das tempestades de compilação de forma eficaz. Uma tempestade de compilação é 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 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) e versões posteriores Description
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.
Contagem aproximada distinta Yes 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, com compatibilidade do banco de dados de nível 160 ou superior Sim, com compatibilidade do banco de dados de nível 160 ou superior 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. Requer que o Repositório de Consultas esteja habilitado 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 Requer que o Repositório de Consultas esteja habilitado e no modo READ_WRITE.
Imposição de plano otimizado com Repositório de Consultas Yes 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 Description
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.
Contagem aproximada distinta Yes 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) Sim, começando com o nível de compatibilidade do banco de dados 160 na Instância Gerenciada de SQL do Azure com a política de atualizaçãodo SQL Server 2025 ou Always-up-to-date. Não, para a política de atualização do SQL Server 2022. 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. Requer que o Repositório de Consultas esteja habilitado e no modo READ_WRITE.
Imposição de plano otimizado com Repositório de Consultas 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) Description
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.
Contagem aproximada distinta Yes 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) Description
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.
Contagem aproximada distinta Yes 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 esteja habilitado e READ_WRITE
Junções adaptáveis (Modo de Lote) No
Contagem aproximada distinta No
Percentil aproximado No
Modo de Lote no Rowstore No
Feedback da CE (estimativa de cardinalidade) Yes
Comentários de DOP (grau de paralelismo) Yes
Execução intercalada No
Feedback de concessão de memória (Modo de Lote) No
Feedback de concessão de memória (Modo de Linha) No
Feedback de concessão de memória (modo de percentil e de persistência) Yes
Imposição de plano otimizado com Repositório de Consultas Yes
Inlining de UDF escalar No
Otimização do plano sensível de parâmetro Não, mas é recomendado
Compilação adiada de variável da tabela No