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 AzureSQL 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 do IQP e quando eles foram introduzidos pela primeira vez para SQL Server. Todos os recursos do IQP estão disponíveis em Instância Gerenciada de SQL do Azure e Banco de Dados SQL do Azure. Alguns recursos dependem do nível de compatibilidade do banco de dados.

Diagrama que representa os recursos da família de processamento de consulta inteligente e quando foram introduzidos em SQL Server.

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

 

Para obter demonstrações e código de exemplo de recursos de IQP (processamento de consulta inteligente), consulte o GitHub repositório de exemplo.

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 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 Banco de Dados SQL do Azure e 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) Sim, começando com o nível de compatibilidade do banco de dados 170 Sim, começando com SQL Server 2025 (17.x) com o nível de compatibilidade do banco de dados 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 Sim, começando com o nível de compatibilidade do banco de dados 170 Sim, começando com SQL Server 2025 (17.x) com o nível de compatibilidade do banco de dados 160 Estende o feedback de CE para melhorar as estimativas de cardinalidade para expressões repetidas em consultas, aprendendo com execuções anteriores e aplicando automaticamente as escolhas de modelo CE apropriadas para futuras execuções dessas expressões.
OPTIMIZED_SP_EXECUTESQL Yes Sim, começando com 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 Banco de Dados SQL do Azure e 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, começando em SQL Server 2017 (14.x) com o nível de compatibilidade do banco de dados 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, começando em SQL Server 2019 (15.x) 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, começando em SQL Server 2022 (16.x) com o 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, começando em SQL Server 2019 (15.x) 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, começando em SQL Server 2022 (16.x) com o 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 Repositório de Consultas seja habilitado.
Execução intercalada Sim, com compatibilidade do banco de dados de nível 140 ou superior Sim, começando em SQL Server 2017 (14.x) com o nível de compatibilidade do banco de dados 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, começando em SQL Server 2017 (14.x) com o nível de compatibilidade do banco de dados 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, começando em SQL Server 2019 (15.x) com o nível de compatibilidade do banco de dados 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, começando com SQL Server 2022 (16.x)) com o nível de compatibilidade do 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 o feedback.
Persistência de feedback de concessão de memória Sim, habilitado em todos os bancos de dados Sim, começando com SQL Server 2022 (16.x)) com o nível de compatibilidade do banco de dados 140 Fornece uma nova funcionalidade para persistir o feedback de concessão de memória. Requer que o Repositório de Consultas esteja habilitado para o banco de dados e em modo READ_WRITE.
Persistência de feedback da CE Sim, com compatibilidade do banco de dados de nível 160 ou superior Sim, começando com SQL Server 2022 (16.x)) com o nível de compatibilidade do banco de dados 160 Requer que o Repositório de Consultas esteja habilitado para o banco de dados e no modo READ_WRITE.
Forçamento otimizado de plano com o Repositório de Consultas Yes Sim, começando com SQL Server 2022 (16.x)). Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, consulte Forçamento de plano otimizado com o Repositório de Consultas.
Inlining de UDF escalar Sim, com compatibilidade do banco de dados de nível 150 ou superior Sim, começando em SQL Server 2019 (15.x) com o nível de compatibilidade do banco de dados 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, começando em SQL Server 2022 (16.x) com o 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, começando em SQL Server 2019 (15.x) com o nível de compatibilidade do banco de dados 150 Usa a cardinalidade real da variável de tabela encontrada na primeira compilação em vez de uma estimativa fixa.

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

Recurso IQP Com suporte no 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 sobre estimativa de cardinalidade (CE) para expressões Sim, começando com o nível de compatibilidade do banco de dados 160 em Instância Gerenciada de SQL do Azure, com o SQL Server 2025 ou Always-up-to-dateupdate policy. Não, para a política de atualização SQL Server 2022. Estende o feedback de CE para melhorar as estimativas de cardinalidade para expressões repetidas em consultas, aprendendo com execuções anteriores e aplicando automaticamente as escolhas de modelo CE apropriadas para futuras execuções dessas expressões.
Comentários de DOP (grau de paralelismo) Sim, começando com o nível de compatibilidade do banco de dados 160 em Instância Gerenciada de SQL do Azure com o SQL Server 2025 ou Always-up-to-dateupdate policy. Não, para a política de atualização 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 Repositório de Consultas seja 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 Repositório de Consultas seja habilitado para o banco de dados e no modo READ_WRITE.
Otimização de Plano de Parâmetro Opcional (OPPO) Sim, começando com o nível de compatibilidade de banco de dados 170 no Instância Gerenciada de SQL do Azure com o SQL Server 2025 ou a política de atualização sempre atualizada. Não, para a política de atualização SQL Server 2022. 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.
Forçamento otimizado de plano com o Repositório de Consultas Nenhum Reduz a sobrecarga de compilação para repetir consultas forçadas. Para obter mais informações, consulte Imposição de plano otimizado com o Repositório de Consultas.
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.
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 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, começando em SQL Server 2017 (14.x) com o nível de compatibilidade do banco de dados 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, começando em SQL Server 2017 (14.x) com o nível de compatibilidade do banco de dados 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ários dos recursos de processamento de consulta inteligente 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 Enable o Repositório de Consultas.

Recurso IQP Requer que Repositório de Consultas seja 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
Forçamento otimizado de plano com o 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