Cenários de uso do Repositório de ConsultasQuery Store Usage Scenarios

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

O Repositório de Consultas pode ser usado em um amplo conjunto de cenários ao rastrear e garantir que o desempenho previsível da carga de trabalho é essencial.Query Store can be used in wide set of scenarios when tracking and ensuring predictable workload performance is critical. Veja alguns exemplos que você pode levar em consideração:Here are some examples you can consider:

  • Apontar e corrigir consultas com regressões de escolha do planoPinpoint and fix queries with plan choice regressions
  • Identificar e ajustar as principais consultas de consumoIdentify and tune top resource consuming queries
  • Fazer testes A/BA/B testing
  • Manter a estabilidade do desempenho durante a atualização para o SQL ServerSQL Server mais recenteKeep performance stability during the upgrade to newer SQL ServerSQL Server
  • Identificar e melhorar cargas de trabalho ad hocIdentify and improve ad hoc workloads

Apontar e corrigir consultas com regressões de escolha do planoPinpoint and fix queries with plan choice regressions

Durante a execução da consulta regular, o Otimizador de Consulta pode decidir usar um plano diferente porque entradas importantes foram modificadas: a cardinalidade dos dados mudou, índices foram criados, alterados ou descartados, estatísticas foram recompiladas etc. Na maioria das vezes, o novo plano é melhor ou quase igual ao que estava sendo usado anteriormente.During its regular query execution, Query Optimizer may decide to choose a different plan because important inputs became different: data cardinality has changed, indexes have been created, altered, or dropped, statistics have been updated, etc. For the most part, the new plan is better, or about the same than the plan used previously. No entanto, há casos em que o novo plano é consideravelmente pior — essa situação é conhecida como regressão de alteração da escolha do plano.However, there are cases when new plan is significantly worse - this situation is referred to as plan choice change regression. Antes do Repositório de Consultas, esse era um problema difícil de identificar e corrigir, pois o SQL ServerSQL Server não fornecia armazenamento de dados interno para que os usuários examinassem os planos de execução usados ao longo do tempo.Prior to Query Store, it was an issue difficult to identify and fix as SQL ServerSQL Server did not provide built-in data store, for users to look at for execution plans that were used over time.

Com o Repositório de Consultas, é possível, rapidamente:With the Query Store, you can quickly:

  • Identificar todas as consultas cujas métricas de execução foram degradadas no período de interesse (última hora, dia, semana etc.).Identify all queries which execution metrics have been degraded, in the period of time of interest (last hour, day, week, etc.). Use as Consultas Regredidas no SQL Server Management StudioSQL Server Management Studio para agilizar a análise.Use Regressed Queries in SQL Server Management StudioSQL Server Management Studio to speed up your analysis.

  • Entre as consultas regredidas, é fácil encontrar aquelas que tiveram vários planos e que foram degradadas devido à escolha de um plano ruim.Among the regressed queries, it's easy to find those that had multiple plans and which degraded because of the bad plan choice. Use o painel Resumo do Plano em Consultas Regredidas para visualizar todos os planos de uma consulta regredida e o respectivo desempenho ao longo do tempo.Use Plan Summary pane in Regressed Queries to visualize all plans for a regressed query and their query performance over time.

  • Forçar o plano anterior no histórico, caso seja provado que ele é melhor.Force the previous plan from the history, if it proved to be better. Usar o botão Forçar plano em Consultas Regredidas para forçar o plano selecionado para a consulta.Use Force Plan button in Regressed Queries to force selected plan for the query.

query-store-usage-1query-store-usage-1

Para obter uma descrição detalhada do cenário, veja o blog Query Store: A flight data recorder for your database (Repositório de Consultas: um gravador de dados de voo para seu banco de dados).For detailed description of the scenario refer to Query Store: A flight data recorder for your database blog.

Identificar e ajustar as principais consultas de consumoIdentify and tune top resource consuming queries

Embora a carga de trabalho possa gerar milhares de consultas, no geral, apenas algumas delas usam de fato a maioria dos recursos do sistema e, portanto, exigem sua atenção.Although your workload may generate thousands of queries, typically only a handful of them actually use the most of the system resources and therefore require your attention. Entre as consultas que mais consomem recursos, normalmente, você encontrará aquelas que são regredidas ou que podem ser aprimoradas com ajuste adicional.Among top resource consuming queries, you will typically find queries that are either regressed or those that can be improved with additional tuning.

A maneira mais fácil de começar a exploração é abrir as Principais Consultas de Consumo de Recursos no Management StudioManagement Studio.The easiest way to start exploration is to open Top Resource Consuming Queries in Management StudioManagement Studio. A interface do usuário é separada em três painéis: um histograma que representa as principais consultas de consumo de recursos (esquerdo), um resumo do plano para a consulta selecionada (direito) e o plano de consulta visual para o plano selecionado (inferior).User interface is separated into three panes: A histogram representing top resource consuming queries (left), a plan summary for selected query (right) and visual query plan for selected plan (bottom). Clique no botão Configurar para controlar quantas consultas você deseja analisar e o intervalo de tempo de interesse.Click the Configure button to control how many queries you want to analyze and the time interval of interest. Além disso, você pode escolher entre diferentes dimensões de consumo de recursos (duração, CPU, memória, E/S, número de execução) e a linha de base (Média, Mín., Máx., Total, Desvio Padrão).Additionally, you can choose between different resource consumption dimensions (duration, CPU, memory, IO, number of executions) and the baseline (Average, Min, Max, Total, Standard Deviation).

query-store-usage-2query-store-usage-2

Veja o resumo do plano à direita para analisar o histórico de execução e saber mais sobre os diferentes planos e suas estatísticas de tempo de execução.Look at the plan summary on the right to analyze the execution history and learn about the different plans and their runtime statistics. Use o painel inferior para examinar os diferentes planos ou para compará-los visualmente, renderizados lado a lado (use o botão Comparar).Use the bottom pane to examine the different plans or to compare them visually, rendered side by side (use the Compare button).

Ao identificar uma consulta com desempenho abaixo do ideal, sua ação dependerá da natureza do problema:When you identify a query with suboptimal performance, your action depends on the nature of the problem:

  1. Se a consulta foi executada com vários planos e o último plano foi consideravelmente pior que o plano anterior, você poderá usar o mecanismo para forçar o plano a fim de garantir que o SQL ServerSQL Server use o plano ideal para execuções futurasIf the query was executed with multiple plans and the last plan is significantly worse than previous plan, you can use the plan forcing mechanism to ensure SQL ServerSQL Server will use the optimal plan for future executions

  2. Verifique se o otimizador está sugerindo algum índice ausente no plano XML.Check if the optimizer is suggesting any missing indexes in XML plan. Se sim, crie o índice ausente e use o Repositório de Consultas para avaliar o desempenho da consulta após a criação do índiceIf yes, create the missing index and use the Query Store to evaluate query performance after the index creation

  3. Verifique se as estatísticas estão atualizadas para as tabelas subjacentes usadas pela consulta.Make sure that the statistics are up-to-date for the underlying tables used by the query.

  4. Verifique se os índices usados pela consulta estão desfragmentados.Make sure that indexes used by the query are defragmented.

  5. Pense em reescrever a consulta dispendiosa.Consider rewriting expensive query. Por exemplo, aproveite a parametrização da consulta e reduza o uso do SQL dinâmico.For example, take advantages of query parameterization and reduce usage of dynamic SQL. Implemente a lógica ideal ao ler os dados (aplique a filtragem de dados no lado do banco de dados, não do aplicativo).Implement optimal logic when read the data (apply data filtering on database side, not on application side).

Fazer testes A/BA/B testing

Use o Repositório de Consultas para comparar o desempenho da carga de trabalho antes e depois da alteração de aplicativo que você planeja introduzir.Use Query Store to compare workload performance before and after the application change you plan to introduce. A lista a seguir contém vários exemplos em que é possível usar o Repositório de Consultas para avaliar o impacto do ambiente ou a alteração do aplicativo no desempenho da carga de trabalho:The following list contains several examples where you can use Query Store to assess impact of the environment or application change to the workload performance:

  • Distribuindo a nova versão do aplicativo.Rolling out new application version.

  • Adicionando novo hardware ao servidor.Adding new hardware to the server.

  • Criando índices ausentes nas tabelas referenciadas por consultas caras.Creating missing indexes on tables referenced by expensive queries.

  • Aplicando política de filtragem para segurança no nível de linha.Applying filtering policy for row-level security. Para obter mais informações, confira Otimizando a segurança em nível de linha com o Repositório de Consultas.For more information, see Optimizing Row Level Security with Query Store.

  • Adicionando controle de versão do sistema temporal a tabelas que são frequentemente modificadas pelos seus aplicativos OLTP.Adding temporal system-versioning to tables that are frequently modified by your OLTP applications.

Em qualquer um desses cenários, aplique o fluxo de trabalho a seguir:In any of these scenarios apply the following workflow:

  1. Execute a carga de trabalho com o Repositório de Consultas antes da alteração planejada para gerar a linha de base de desempenho.Run your workload with the Query Store before the planned change to generate performance baseline.

  2. Aplique a alteração do aplicativo no momento determinado.Apply application change at the controlled moment in time.

  3. Continue executando a carga de trabalho por tempo suficiente para gerar a imagem de desempenho do sistema após a mudançaContinue running the workload long enough to generate performance image of the system after the change

  4. Compare os resultados de 1 a 3.Compare results from #1 and #3.

    1. Abra Consumo geral do banco de dados para determinar o impacto no banco de dados inteiro.Open Overall Database Consumption to determine impact to the entire database.

    2. Abra Principais Consultas de Consumo de Recursos (ou execute sua própria análise usando o Transact-SQLTransact-SQL) para analisar o impacto da alteração nas consultas mais importantes.Open Top Resource Consuming Queries (or run your own analysis using Transact-SQLTransact-SQL) to analyze impact of the change to the most important queries.

  5. Decida se manterá a alteração ou executará a reversão quando o novo desempenho não for aceitável.Decide whether to keep the change or perform roll back in case when new performance is unacceptable.

A ilustração a seguir mostra a análise do Repositório de Consultas (etapa 4) no caso de criação de índice ausente.The following illustration shows Query Store analysis (step 4) in case of missing index creation. Abra o painel Principais Consultas de Consumo de Recursos /Resumo do plano para obter essa visão da consulta que deve ser afetada pela criação do índice:Open Top Resource Consuming Queries / Plan summary pane to get this view for the query that should be impacted by the index creation:

query-store-usage-3query-store-usage-3

Além disso, você pode comparar os planos antes e depois da criação do índice renderizando-os lado a lado.Additionally, you can compare plans before and after index creation by rendering them side by side. (Opção da barra de ferramentas "Comparar os planos para a consulta selecionada em uma janela separada", que é marcada com um quadrado vermelho.)("Compare the plans for the selected query in a separate window" toolbar option, which is marked with red square on the toolbar.)

query-store-usage-4query-store-usage-4

Planejar antes da criação do índice (plan_id = 1, acima) tem dica de índice ausente, e como pode ser visto, essa Verificação de Índice Clusterizado foi o operador mais caro na consulta (retângulo vermelho).Plan before index creation (plan_id = 1, above) has missing index hint and you can inspect that Clustered Index Scan was the most expensive operator in the query (red rectangle).

Plano depois da criação do índice ausente (plan_id = 15, abaixo) agora tem Index Seek (Não clusterizado), que reduz o custo geral da consulta e aprimora o desempenho (retângulo verde).Plan after missing index creation (plan_id = 15, below) now has Index Seek (Nonclustered) which reduces the overall cost of the query and improves it performance (green rectangle).

Com base na análise, você provavelmente mantém o índice, uma vez que o desempenho da consulta foi aprimorado.Based on analysis you would likely keep the index as query performance has been improved.

Manter a estabilidade do desempenho durante a atualização para o SQL ServerSQL Server mais recenteKeep performance stability during the upgrade to newer SQL ServerSQL Server

Antes do SQL Server 2014 (12.x)SQL Server 2014 (12.x), os usuários eram expostos ao risco de regressão de desempenho durante a atualização para a versão mais recente da plataforma.Prior to SQL Server 2014 (12.x)SQL Server 2014 (12.x), users were exposed to the risk of performance regression during the upgrade to the latest platform version. O motivo disso era o fato de que a versão mais recente do Otimizador de Consulta ficava ativa imediatamente assim que novos bits eram instalados.The reason for that was the fact that latest version of Query Optimizer became active immediately once new bits are installed.

A partir do SQL Server 2014 (12.x)SQL Server 2014 (12.x) todas as alterações do otimizador de consulta são associadas ao nível de compatibilidade do banco de dados mais recente, portanto, os planos não são alterados diretamente no ponto de atualização, mas sim quando um usuário altera o COMPATIBILITY_LEVEL para o mais recente.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) all Query Optimizer changes are tied to the latest database compatibility level, so plans are not changed right at point of upgrade but rather when a user changes the COMPATIBILITY_LEVEL to the latest one. Esse recurso, em combinação com o Repositório de Consultas, fornece um excelente nível de controle sobre o desempenho da consulta no processo de atualização.This capability, in combination with Query Store gives you a great level of control over the query performance in the upgrade process. O fluxo de trabalho de atualização recomendado é mostrado na figura a seguir:Recommended upgrade workflow is shown in the following picture:

query-store-usage-5query-store-usage-5

  1. Atualizar SQL ServerSQL Server sem alterar o nível de compatibilidade do banco de dados.Upgrade SQL ServerSQL Server without changing the database compatibility level. Isso não expõe as últimas alterações do otimizador de consulta, mas ainda fornece os recursos mais recente do SQL ServerSQL Server, incluindo o Repositório de Consultas.It doesn't expose the latest Query Optimizer changes but still provides newer SQL ServerSQL Server features including Query Store.

  2. Habilite o Repositório de Consultas.Enable Query Store. Para obter mais informações sobre este tópico, consulte Manter o Repositório de Consultas ajustado à sua carga de trabalho.For more information on this topic, see Keep Query Store adjusted to your workload.

  3. Permitir que o Repositório de Consultas capture consultas e planos e estabeleça uma linha de base de desempenho com o nível de compatibilidade do banco de dados original/anterior.Allow Query Store to capture queries and plans, and establishes a performance baseline with the source/previous database compatibility level. Mantenha-se nesta etapa tempo suficiente para capturar todos os planos e uma linha de base estável.Stay at this step long enough to capture all plans and get a stable baseline. Isso pode ter a duração de um ciclo comercial normal de uma carga de trabalho de produção.This can be the duration of a usual business cycle for a production workload.

  4. Passe para o nível de compatibilidade do banco de dados mais recente: exponha sua carga de trabalho para as últimas alterações do otimizador de consulta e deixe-o possivelmente criar novos planos.Move to latest database compatibility level: get your workload exposed to the latest Query Optimizer changes and let it potentially create new plans.

  5. Use o Repositório de Consultas para correções de regressão e análise: geralmente, as novas alterações do otimizador de consulta geram planos melhores.Use Query Store for analysis and regression fixes: for the most part, the new Query Optimizer changes should produce better plans. No entanto, o Repositório de Consultas fornecerá uma maneira fácil de identificar as regressões de escolha do plano e corrigi-las usando um mecanismo para forçar plano.However, Query Store will provide an easy way to identify plan choice regressions and fix them using a plan forcing mechanism. Começando com SQL Server 2017 (14.x)SQL Server 2017 (14.x), ao usar o recurso de Correção automática de plano, essa etapa se torna automática.Starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x), when using the Automatic Plan Correction feature, this step becomes automatic.

    A.a. Nos casos em que há regressões, force o bom plano conhecido anteriormente no repositório de consultas.For cases where there are regressions, force the previously known good plan in the Query Store.

    B.b. Se houver planos de consulta que falham ao forçar ou se o desempenho ainda for insuficiente, considere reverter o nível de compatibilidade do banco de dados para a configuração anterior e, então, contatar Suporte ao Cliente Microsoft.If there are query plans that fail to force, or if performance is still insufficient, consider reverting the database compatibility level to the prior setting, and then engaging Microsoft Customer Support.

Dica

Use a tarefa Atualizar banco de dados de SQL Server Management StudioSQL Server Management Studio para atualizar o nível de compatibilidade do banco de dados do banco de dados.Use SQL Server Management StudioSQL Server Management Studio Upgrade Database task to upgrade the database compatibility level of the database. Confira Atualizando bancos de dados usando o Assistente de Ajuste de Consulta para obter mais detalhes.See Upgrading Databases by using the Query Tuning Assistant for details.

Identificar e melhorar cargas de trabalho ad hocIdentify and improve ad hoc workloads

Algumas cargas de trabalho não têm consultas dominantes que você possa ajustar a fim de melhorar o desempenho geral do aplicativo.Some workloads do not have dominant queries that you can tune to improve overall application performance. Geralmente, essas cargas de trabalho são caracterizadas por um número relativamente grande de consultas diferentes, cada uma delas consumindo parte dos recursos do sistema.Those workloads are typically characterized with relatively large number of different queries each of them consuming portion of system resources. Sendo exclusivas, essas consultas são executadas muito raramente (em geral, apenas uma vez, por isso, ad hoc), de modo que o respectivo consumo do tempo de execução não é crítico.Being unique, those queries are executed very rarely (usually only once, thus name ad hoc), so their runtime consumption is not critical. Por outro lado, considerando que esse aplicativo está gerando novas consultas o tempo todo, uma parte significativa dos recursos do sistema é gasto na compilação de consulta, o que não é ideal.On the other hand, given that application is generating net new queries all the time, significant portion of system resources is spent on query compilation, which is not optimal. Essa não é uma situação ideal para o Repositório de Consultas, uma vez que o número grande de consultas e planos enchem o espaço que você reservou, o que significa que o Repositório de Consultas provavelmente acabará no modo somente leitura muito rapidamente.This is not ideal situation for Query Store either given that large number of queries and plans flood the space you have reserved which means that Query Store will likely end up in the read-only mode very quickly. Se você ativou a Política de Limpeza Baseada em Tamanho (altamente recomendado para manter o Repositório de Consultas sempre funcionando), o processo em segundo plano limpará as estruturas do Repositório de Consultas na maior parte do tempo, também usando recursos significativos do sistema.If you activated Size Based Cleanup Policy (highly recommended to keep Query Store always up and running), then background process will be cleaning Query Store structures most of the time also taking significant system resources.

A exibiçãoPrincipais Consultas de Consumo de Recursos fornece a primeira indicação da natureza ad hoc da carga de trabalho:Top Resource Consuming Queries view gives you first indication of the ad hoc nature of your workload:

query-store-usage-6query-store-usage-6

Use a métrica Contagem de Execução para analisar se as consultas principais são ad hoc (isso exige que você execute o Repositório de Consultas com QUERY_CAPTURE_MODE = ALL).Use Execution Count metric to analyze whether your top queries are ad hoc (this requires you to run Query Store with QUERY_CAPTURE_MODE = ALL). No diagrama acima, você pode ver que 90% das suas Principais Consultas de Consumo de Recursos são executadas apenas uma vez.From the diagram above, you can see that 90% of your Top Resource Consuming Queries are executed only once.

Como alternativa, é possível executar o script Transact-SQLTransact-SQL para obter o número total de textos de consulta, consultas e planos no sistema e determinar o quanto eles são diferentes comparando query_hash e plan_hash:Alternatively, you can run Transact-SQLTransact-SQL script to get total number of query texts, queries, and plans in the system and determine how different they are by comparing the query_hash and plan_hash:

--Do cardinality analysis when suspect on ad hoc workloads
SELECT COUNT(*) AS CountQueryTextRows FROM sys.query_store_query_text;  
SELECT COUNT(*) AS CountQueryRows FROM sys.query_store_query;  
SELECT COUNT(DISTINCT query_hash) AS CountDifferentQueryRows FROM  sys.query_store_query;  
SELECT COUNT(*) AS CountPlanRows FROM sys.query_store_plan;  
SELECT COUNT(DISTINCT query_plan_hash) AS  CountDifferentPlanRows FROM  sys.query_store_plan;  

Esse é um resultado potencial que você pode obter em caso de carga de trabalho com consultas ad hoc:This is one potential result you can get in case of workload with ad hoc queries:

query-store-usage-7query-store-usage-7

O resultado da consulta mostra que, apesar do grande número de consultas e planos no Repositório de Consultas, os respectivos query_hash e query_plan_hash, na verdade, não são diferentes.Query result shows that despite the large number of queries and plans in the Query Store their query_hash and query_plan_hash are actually not different. Uma taxa entre textos de consulta exclusiva e query_hash exclusivo, que é muito maior que 1, é uma indicação de que a carga de trabalho é uma boa candidata à parametrização, pois a única diferença entre as consultas é a constante literal (parâmetro) fornecida como parte do texto de consulta.A ratio between unique query texts and unique query hashes, which is much bigger than 1, is an indication that workload is a good candidate for parameterization, as the only difference between the queries is literal constant (parameter) provided as part of the query text.

Geralmente, essa situação ocorrerá se o aplicativo gerar consultas (em vez de invocar procedimentos armazenados ou consultas parametrizadas) ou se ele depender de estruturas de mapeamento relacional de objeto que gere consultas por padrão.Usually, this situation happens if your application generates queries (instead of invoking stored procedures or parameterized queries) or if it relies on object-relational mapping frameworks that generate queries by default.

Se você estiver no controle do código do aplicativo, reescreva a camada de acesso a dados para utilizar procedimentos armazenados ou consultas parametrizadas.If you are in control of the application code, you may consider rewriting of the data access layer to utilize stored procedures or parameterized queries. No entanto, essa situação também pode ser significativamente aprimorada sem mudanças no aplicativo, forçando a parametrização de consulta em todo o banco de dados (todas as consultas) ou nos modelos de consulta individuais com o mesmo query_hash.However, this situation can be also significantly improved without application changes by forcing query parameterization for the entire database (all queries) or for the individual query templates with the same query_hash.

A abordagem com modelos de consulta individuais exige a criação do guia de plano:Approach with individual query templates requires plan guide creation:

--Apply plan guide for the selected query template 
DECLARE @stmt nvarchar(max);  
DECLARE @params nvarchar(max);  
EXEC sp_get_query_template   
    N'<your query text goes here>',  
    @stmt OUTPUT,   
    @params OUTPUT;  
  
EXEC sp_create_plan_guide   
    N'TemplateGuide1',   
    @stmt,   
    N'TEMPLATE',   
    NULL,   
    @params,   
    N'OPTION (PARAMETERIZATION FORCED)';  

A solução com guias de plano é mais precisa, mas é mais trabalhosa.Solution with plan guides is more precise but it requires more work.

Se todas as consultas (ou a maioria delas) forem candidatas à parametrização automática, alterar FORCED PARAMETERIZATION para o banco de dados inteiro poderá ser uma opção mais adequada:If all your queries (or the majority of them) are candidates for auto-parameterization, then changing FORCED PARAMETERIZATION for the entire database may be a better option:

--Apply forced parameterization for entire database  
ALTER DATABASE <database name> SET PARAMETERIZATION FORCED;  

Observação

Para obter mais informações sobre este tópico, consulte Diretrizes para uso da parametrização forçada.For more information on this topic, see Guidelines for Using Forced Parameterization.

Depois de aplicar algumas dessas etapas, Principais Consultas de Consumo de Recursos mostrará uma imagem diferente da sua carga de trabalho.After you apply any of these steps, Top Resource Consuming Queries will show you different picture of your workload.

query-store-usage-8query-store-usage-8

Em alguns casos, seu aplicativo pode gerar muitas consultas diferentes que não são boas candidatas à parametrização automática.In some cases, your application may generate lots of different queries which are not good candidates for auto-parameterization. Nesse caso, você vê um grande número de consultas no sistema, mas a taxa entre consultas exclusivas e o query_hash exclusivo será, provavelmente, próximo a 1.In that case, you see large number of queries in the system but the ratio between unique queries and unique query_hash is likely close to 1.

Nesse caso talvez você queira habilitar a opção de servidor Otimizar para cargas de trabalho ad hoc para evitar desperdício de memória de cache em consultas que provavelmente não serão executadas novamente.In that case, you may want to enable the Optimize for Ad hoc Workloads server option to prevent wasting cache memory on queries that won't likely be executed again. Para impedir a captura dessas consultas no Repositório de Consultas, defina QUERY_CAPTURE_MODE para AUTO.To prevent capture of those queries in the Query Store, set QUERY_CAPTURE_MODE to AUTO.

EXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'optimize for ad hoc workloads', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO 
  
ALTER DATABASE [QueryStoreTest] SET QUERY_STORE CLEAR;  
ALTER DATABASE [QueryStoreTest] SET QUERY_STORE = ON   
    (OPERATION_MODE = READ_WRITE, QUERY_CAPTURE_MODE = AUTO);  

Consulte TambémSee Also

Monitorando o desempenho com o repositório de consultas Monitoring Performance By Using the Query Store
Prática recomendada com o Repositório de Consultas Best Practice with the Query Store
Atualizando bancos de dados usando o Assistente de Ajuste de ConsultaUpgrading Databases by using the Query Tuning Assistant