Atualizando bancos de dados usando o Assistente de Ajuste de ConsultaUpgrading Databases by using the Query Tuning Assistant

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

Ao migrar de versões mais antigas do SQL ServerSQL Server para o SQL Server 2014 (12.x)SQL Server 2014 (12.x) ou mais recente e atualizar o nível de compatibilidade do banco de dados para o mais recente disponível, uma carga de trabalho poderá ser exposta ao risco de regressão de desempenho.When migrating from an older version of SQL ServerSQL Server to SQL Server 2014 (12.x)SQL Server 2014 (12.x) or newer, and upgrading the database compatibility level to the latest available, a workload may be exposed to the risk of performance regression. Isso também é possível em um grau menor ao atualizar entre o SQL Server 2014 (12.x)SQL Server 2014 (12.x) e qualquer versão mais recente.This is also possible to a lesser degree when upgrading between SQL Server 2014 (12.x)SQL Server 2014 (12.x) and any newer version.

Começando com o SQL Server 2014 (12.x)SQL Server 2014 (12.x), e a cada nova versão, todas as alterações do otimizador de consulta são restritas ao último nível de compatibilidade do banco de dados, portanto, os planos de execução não são alterados diretamente no ponto de atualização, mas sim quando um usuário altera a opção do banco de dados COMPATIBILITY_LEVEL para a versão mais recente disponível.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x), and with every new version, all query optimizer changes are gated to the latest database compatibility level, so execution plans are not changed right at point of upgrade but rather when a user changes the COMPATIBILITY_LEVEL database option to the latest available. Para obter mais informações sobre as alterações do otimizador de consulta introduzidas no SQL Server 2014 (12.x)SQL Server 2014 (12.x), confira Estimador de cardinalidade.For more information on query optimizer changes introduced in SQL Server 2014 (12.x)SQL Server 2014 (12.x), see Cardinality Estimator. Para saber mais sobre os níveis de compatibilidade e como eles podem afetar as atualizações, confira Níveis de compatibilidade e atualizações do Mecanismo de Banco de Dados.For more information about compatibility levels and how they can affect upgrades, see Compatibility Levels and Database Engine Upgrades.

Essa funcionalidade associada fornecida pelo nível de compatibilidade do banco de dados, em combinação com o Repositório de Consultas oferece um excelente nível de controle sobre o desempenho da consulta no processo de atualização quando a atualização segue o fluxo de trabalho recomendado, mostrado abaixo.This gating capability provided by the database compatibility level, in combination with Query Store gives you a great level of control over the query performance in the upgrade process if the upgrade follows the recommended workflow seen below. Para obter mais informações sobre o fluxo de trabalho recomendado para atualizar o nível de compatibilidade, confira Alterar o modo de compatibilidade do banco de dados e usar o Repositório de Consultas.For more information on the recommended workflow for upgrading the compatibility level, see Change the Database Compatibility Mode and Use the Query Store.

Fluxo de trabalho de atualização do banco de dados recomendado usando o Repositório de ConsultasRecommended database upgrade workflow using Query Store

Esse controle sobre as atualizações foi ainda mais aprimorado no SQL Server 2017 (14.x)SQL Server 2017 (14.x), no qual o Ajuste Automático foi introduzido permitindo automatizar a última etapa no fluxo de trabalho recomendado acima.This control over upgrades was further improved with SQL Server 2017 (14.x)SQL Server 2017 (14.x) where Automatic Tuning was introduced and allows automating the last step in the recommended workflow above.

Começando com o SQL Server Management StudioSQL Server Management Studio v18, o novo recurso QTA (Assistente de Ajuste de Consulta) orientará os usuários pelo fluxo de trabalho recomendado para manter a estabilidade do desempenho durante as atualizações para as versões do SQL ServerSQL Server mais recentes, conforme documentado na seção Manter a estabilidade do desempenho durante a atualização para o SQL Server mais recente dos Cenários de uso do Repositório de Consultas.Starting with SQL Server Management StudioSQL Server Management Studio v18, the new Query Tuning Assistant (QTA) feature will guide users through the recommended workflow to keep performance stability during upgrades to newer SQL ServerSQL Server versions, as documented in the section Keep performance stability during the upgrade to newer SQL Server of Query Store Usage Scenarios. No entanto, o QTA não é revertido para um plano em bom estado anteriormente conhecido, como visto na última etapa do fluxo de trabalho recomendado.However, QTA does not roll back to a previously known good plan as seen in the last step of the recommended workflow. Em vez disso, o QTA vai rastrear todas as regressões encontradas na exibição Consultas Regredidas do Repositório de Consultas e iterar por meio de possíveis permutações das variações do modelo do otimizador aplicável para que um plano novo e melhor possa ser gerado.Instead, QTA will track any regressions found in the Query Store Regressed Queries view, and iterate through possible permutations of applicable optimizer model variations so that a new better plan can be produced.

Importante

O QTA não gera a carga de trabalho do usuário.QTA does not generate user workload. Ao executar o QTA em um ambiente que não seja usado pelos seus aplicativos, verifique se ainda é possível executar uma carga de trabalho de teste representativa no Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine de destino por outros meios.If running QTA in an environment that is not used by your applications, ensure that you can still execute representative test workload on the targeted Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine by other means.

O fluxo de trabalho do Assistente de Ajuste de ConsultaThe Query Tuning Assistant workflow

O ponto de partida do QTA supõe que um banco de dados de uma versão anterior do SQL ServerSQL Server seja movido (por CREATE DATABASE... FOR ATTACH ou RESTORE) para uma versão mais recente do Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, e o nível de compatibilidade do banco de dados antes da atualização não será alterado imediatamente.The starting point of QTA assumes that a database from a previous version of SQL ServerSQL Server is moved (through CREATE DATABASE ... FOR ATTACH or RESTORE) to a newer version of the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, and the before-upgrade database compatibility level is not changed immediately. O QTA orientará pelas etapas a seguir:QTA will guide through the following steps:

  1. Configure o Repositório de Consultas de acordo com as configurações recomendadas de duração da carga de trabalho (em dias) definidas pelo usuário.Configure Query Store according to recommended settings for the workload duration (in days) set by the user. Pense em uma duração de carga de trabalho que corresponda ao seu ciclo comercial típico.Think about the workload duration that matches your typical business cycle.
  2. Solicite o início da carga de trabalho necessária para que esse Repositório de Consultas possa coletar uma linha de base de dados de carga de trabalho (se ainda não houver nenhum disponível).Request to start the required workload, so that Query Store can collect a baseline of workload data (if none available yet).
  3. Atualize para o nível de compatibilidade do banco de dados de destino escolhido pelo usuário.Upgrade to the target database compatibility level chosen by the user.
  4. Solicite que uma segunda leva de dados de carga de trabalho seja coletada para a detecção de regressão e de comparação.Request that a second pass of workload data is collected for comparison and regression detection.
  5. Itere por meio das regressões encontradas na exibição Consultas Regredidas do Repositório de Consultas, experimente a coleta de estatísticas de tempo de execução sobre possíveis permutações de variações de modelo do otimizador aplicável e meça o resultado.Iterate through any regressions found based on Query Store Regressed Queries view, experiment by collecting runtime statistics on possible permutations of applicable optimizer model variations, and measure the outcome.
  6. Relate as melhorias medidas e, opcionalmente, permita que essas alterações persistam usando guias de plano.Report on the measured improvements, and optionally allow those changes to be persisted using plan guides.

Para obter mais informações sobre como anexar um banco de dados, confira Anexar e desanexar bancos de dados.For more information on attaching a database, see Database Detach and Attach.

Veja abaixo como o QTA basicamente apenas muda as últimas etapas do fluxo de trabalho recomendado para atualizar o nível de compatibilidade usando o Repositório de Consultas mostrado acima.See below how QTA essentially only changes the last steps of the recommended workflow for upgrading the compatibility level using Query Store seen above. Em vez de oferecer a opção de escolher entre o plano de execução ineficiente no momento e o último plano de execução eficiente conhecido, o QTA apresenta opções de ajuste específicas das consultas regredidas selecionadas para a criação de um novo estado aprimorado com planos de execução ajustados.Instead of having the option to choose between the currently inefficient execution plan and the last known good execution plan, QTA presents tuning options that are specific for the selected regressed queries, to create a new improved state with tuned execution plans.

Fluxo de trabalho de atualização do banco de dados recomendado usando o QTARecommended database upgrade workflow using QTA

Espaço de pesquisa interno do Ajuste do QTAQTA Tuning internal search space

O QTA é indicado apenas para consultas SELECT que podem ser executadas pelo Repositório de Consultas.QTA targets only SELECT queries that can be executed from Query Store. As consultas parametrizadas são qualificadas quando o parâmetro compilado é conhecido.Parameterized queries are eligible if the compiled parameter is known. As consultas que dependem de construções de tempo de execução, como tabelas temporárias ou variáveis de tabela não são qualificadas no momento.Queries that depend on runtime constructs such as temporary tables or table variables are not eligible at this time.

O QTA é indicado para possíveis padrões de regressões de consulta devido a alterações nas versões CE (Estimador de Cardinalidade).QTA targets known possible patterns of query regressions due to changes in Cardinality Estimator (CE) versions. Por exemplo, durante a atualização de um banco de dados do SQL Server 2012 (11.x)SQL Server 2012 (11.x) e do nível de compatibilidade do banco de dados 110 para o SQL Server 2017 (14.x)SQL Server 2017 (14.x) e o nível de compatibilidade do banco de dados 140, algumas consultas podem regredir porque foram projetadas especificamente para funcionar com a versão do CE que existia no SQL Server 2012 (11.x)SQL Server 2012 (11.x) (CE 70).For example, when upgrading a database from SQL Server 2012 (11.x)SQL Server 2012 (11.x) and database compatibility level 110, to SQL Server 2017 (14.x)SQL Server 2017 (14.x) and database compatibility level 140, some queries may regress because they were designed specifically to work with the CE version that existed in SQL Server 2012 (11.x)SQL Server 2012 (11.x) (CE 70). Isso não significa que a reversão do CE 140 para o CE 70 é a única opção.This does not mean that reverting from CE 140 to CE 70 is the only option. Se apenas uma alteração específica da versão mais recente estiver apresentando a regressão, será possível indicar essa consulta a usar apenas a parte relevante da versão anterior do CE que estava funcionando melhor para a consulta específica, continuando a aproveitar todas as outras melhorias das versões mais recentes do CE.If only a specific change in the newer version is introducing the regression, then it is possible to hint that query to use just the relevant part of the previous CE version that was working better for the specific query, while still leveraging all other improvements of newer CE versions. E também permitir que as outras consultas na carga de trabalho que não regrediram se beneficiem das melhorias mais recentes do CE.And also allow other queries in the workload that have not regressed to benefit from newer CE improvements.

Os padrões do CE pesquisados pelo QTA são os seguintes:The CE patterns searched by QTA are the following:

  • Independência versus Correlação: se a pressuposição de independência fornecer estimativas melhores para a consulta específica, a dica de consulta USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES') fará com que SQL ServerSQL Server gere um plano de execução usando a seletividade mínima ao estimar predicados AND para os filtros a serem considerados para correlação.Independence vs. Correlation: If independence assumption provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES') causes SQL ServerSQL Server to generate an execution plan by using minimum selectivity when estimating AND predicates for filters to account for correlation. Para obter mais informações, confira Dicas de consulta USE HINT e Versões do CE.For more information, see USE HINT query hints and Versions of the CE.
  • Independência simples versus independência de base: se uma independência de junção diferente fornecer estimativas melhores para a consulta específica, a dica de consulta USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS') fará com que o SQL ServerSQL Server gere um plano de execução usando a pressuposição de independência simples em vez da pressuposição de independência de base padrão.Simple Containment vs. Base Containment: If a different join containment provides better estimations for the specific query, then the query hint USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS') causes SQL ServerSQL Server to generate an execution plan by using the Simple Containment assumption instead of the default Base Containment assumption. Para obter mais informações, confira Dicas de consulta USE HINT e Versões do CE.For more information, see USE HINT query hints and Versions of the CE.
  • Estimativa de cardinalidade fixa da MSTVF (função com valor de tabela de várias instruções) de 100 linhas versus 1 linha: se o padrão fixo de estimativa de TVFs de 100 linhas não resultar em um plano mais eficiente do que o uso da estimativa fixa de TVFs de 1 linha (correspondente ao padrão do modelo do CE do otimizador de consulta SQL Server 2008 R2SQL Server 2008 R2 e versões anteriores), a dica de consulta QUERYTRACEON 9488 será usada para gerar um plano de execução.Multi-statement table-valued function (MSTVF) fixed cardinality guess of 100 rows vs. 1 row: If the default fixed estimation for TVFs of 100 rows does not result in a more efficient plan than using the fixed estimation for TVFs of 1 row (corresponding to the default under the query optimizer CE model of SQL Server 2008 R2SQL Server 2008 R2 and earlier versions), then the query hint QUERYTRACEON 9488 is used to generate an execution plan. Para obter mais informações sobre as MSTVFs, confira Criar funções definidas pelo usuário (Mecanismo de Banco de Dados).For more information on MSTVFs, see Create User-defined Functions (Database Engine).

Observação

Como último recurso, se as dicas com escopo reduzido não estiverem rendendo bons resultados suficientes para os padrões de consulta elegíveis, também será considerado o uso completo do CE 70 usando a dica de consulta USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') para gerar um plano de execução.As a last resort, if the narrow scoped hints are not yielding good enough results for the eligible query patterns, then full use of CE 70 is also considered, by using the query hint USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION') to generate an execution plan.

Importante

Toda dica força determinados comportamentos que poderão ser resolvidos em atualizações futuras do SQL ServerSQL Server.Any hint forces certain behaviors that may be addressed in future SQL ServerSQL Server updates. É recomendado aplicar dicas apenas quando não houver nenhuma outra opção e planejar rever o código com dicas a cada nova atualização.We recommend you only apply hints when no other option exists, and plan to revisit hinted code with every new upgrade. Ao forçar comportamentos, você pode impedir que sua carga de trabalho se beneficie das melhorias introduzidas nas versões mais recentes do SQL ServerSQL Server.By forcing behaviors, you may be precluding your workload from benefiting of enhancements introduced in newer versions of SQL ServerSQL Server.

Iniciando o Assistente de Ajuste de Consulta para atualizações de banco de dadosStarting Query Tuning Assistant for database upgrades

O QTA é um recurso baseado em sessão que armazena o estado de sessão no esquema msqta do banco de dados de usuário no qual uma sessão é criada pela primeira vez.QTA is a session-based feature that stores session state in the msqta schema of the user database where a session is created for the first time. Várias sessões de ajuste podem ser criadas em um banco de dados individual ao longo do tempo, mas somente uma sessão ativa pode existir para um determinado banco de dados.Multiple tuning sessions can be created on a single database over time, but only one active session can exist for any given database.

Criando uma sessão de atualização de banco de dadosCreating a database upgrade session

  1. No SQL Server Management StudioSQL Server Management Studio, abra o Pesquisador de Objetos e conecte-se a Mecanismo de Banco de DadosDatabase Engine.In SQL Server Management StudioSQL Server Management Studio open the Object Explorer and connect to Mecanismo de Banco de DadosDatabase Engine.

  2. Para o banco de dados cujo nível de compatibilidade será atualizado, clique com o botão direito do mouse no nome do banco de dados, selecione Tarefas, selecione Atualizar Banco de Dados e clique em Nova Sessão de Atualização do Banco de Dados.For the database that is intended to upgrade the database compatibility level, right-click the database name, select Tasks, select Database Upgrade, and click on New Database Upgrade Session.

  3. Na janela do Assistente QTA, são necessárias duas etapas para configurar uma sessão:In the QTA Wizard window, two steps are required to configure a session:

    1. Na janela Configuração, configure o Repositório de Consultas para capturar o equivalente a um ciclo comercial completo de dados de carga de trabalho para análise e ajuste.In the Setup window, configure Query Store to capture the equivalent of one full business cycle of workload data to analyze and tune.
      • Digite a duração esperada da carga de trabalho em dias (o mínimo é 1 dia).Enter the expected workload duration in days (minimum is 1 day). Isso será usado para propor configurações recomendadas do Repositório de Consultas para tentar permitir que a linha de base inteira seja coletada.This will be used to propose recommended Query Store settings to tentatively allow the entire baseline to be collected. Capturar uma boa linha de base é importante para garantir que todas as consultas regredidas encontradas depois da alteração do nível de compatibilidade do banco de dados possam ser analisadas.Capturing a good baseline is important to ensure any regressed queries found after changing the database compatibility level are able to be analyzed.
      • Defina o nível de compatibilidade do banco de dados de destino pretendido para o banco de dados de usuário, depois que o fluxo de trabalho do QTA for concluído.Set the intended target database compatibility level that the user database should be at, after the QTA workflow has completed. Após a conclusão, clique em Avançar.Once complete, click Next.

    Nova janela de configuração da sessão de atualização do banco de dadosNew database upgrade session setup window

    1. Na janela Configurações, duas colunas mostram o estado Atual do Repositório de Consultas no banco de dados de destino, bem como as configurações Recomendadas.In the Settings window, two columns show the Current state of Query Store in the targeted database, as well as the Recommended settings.
      • As configurações Recomendadas são selecionadas por padrão, mas o clique no botão de opção na coluna Atual aceita as configurações atuais e também permite ajustar melhor a configuração atual do Repositório de Consultas.The Recommended settings are selected by default, but clicking the radio button over the Current column accepts current settings, and also allows fine-tuning the current Query Store configuration.
      • A configuração Limite de Consulta Obsoleto proposta é o dobro do número da duração da carga de trabalho esperada em dias.The proposed Stale Query Threshold setting is twice the number of expected workload duration in days. Isso ocorre porque o Repositório de Consultas precisará manter as informações sobre a carga de trabalho de linha de base e a carga de trabalho após a atualização do banco de dados.This is because Query Store will need to hold information on the baseline workload and the post-database upgrade workload. Após a conclusão, clique em Avançar.Once complete, click Next.

    Nova janela de configurações de atualização do banco de dadosNew database upgrade settings window

    Importante

    O Tamanho Máximo proposto é um valor arbitrário que pode ser adequado para uma carga de trabalho com tempo curto.The proposed Max Size is an arbitrary value that may be suited for a short timed workload.
    No entanto, saiba que pode não ser suficiente manter informações sobre as cargas de trabalho de linha de base e após a atualização do banco de dados para cargas de trabalho muito intensivas, ou seja, quando muitos planos diferentes podem ser gerados.However, keep in mind that it may be insufficient to hold information on the baseline and post-database upgrade workloads for very intensive workloads, namely when many different plans may be generated.
    Se você puder prever que isso ocorrerá, insira um valor mais alto que seja apropriado.If you antecipate this will be the case, enter a higher value that is appropriate.

  4. A janela Ajuste conclui a configuração da sessão e instrui sobre as próximas etapas para abrir e prosseguir com a sessão.The Tuning window concludes the session configuration, and instructs on next steps to open and proceed with the session. Após a conclusão, clique em Concluir.Once complete, click Finish.

    Nova janela de ajuste de atualização do banco de dadosNew database upgrade tuning window

Observação

Um possível cenário alternativo é iniciado restaurando um backup de banco de dados do servidor de produção no qual um banco de dados já tenha passado pelo fluxo de trabalho recomendado de atualização de compatibilidade de banco de dados, para um servidor de teste.A possible alternative scenario starts by restoring a database backup from the production server where a database has already gone through the recommended database compatibility upgrade workflow, to a test server.

Executando o fluxo de trabalho de atualização de banco de dadosExecuting the database upgrade workflow

  1. Para o banco de dados cujo nível de compatibilidade será atualizado, clique com o botão direito do mouse no nome do banco de dados, selecione Tarefas, selecione Atualizar Banco de Dados e clique em Monitorar Sessões.For the database that is intended to upgrade the database compatibility level, right-click the database name, select Tasks, select Database Upgrade, and click on Monitor Sessions.

  2. A página gerenciamento de sessão lista as sessões atuais e antigas do banco de dados no escopo.The session management page lists current and past sessions for the database in scope. Selecione a sessão desejada e clique em Detalhes.Select the desired session, and click on Details.

    Observação

    Se a sessão atual não estiver presente, clique no botão Atualizar.If the current session is not present, click the Refresh button.

    A lista contém as seguintes informações:The list contains the following information:

    • ID da SessãoSession ID
    • Nome da Sessão: nome gerado pelo sistema composto pelo nome do banco de dados e pela data e hora da criação da sessão.Session Name: System-generated name comprised of the database name, date and time of session creation.
    • Status: status da sessão (Ativa ou Fechada).Status: Status of the session (Active or Closed).
    • Descrição: gerada pelo sistema composta pelo nível de compatibilidade do banco de dados de destino selecionado pelo usuário e número de dias da carga de trabalho do ciclo comercial.Description: System-generated comprised of the user selected target database compatibility level and number of days for business cycle workload.
    • Hora de início: a data e a hora em que a sessão foi criada.Time Started: Date and time of when the session was created.

    Página de gerenciamento da sessão do QTAQTA Session Management page

    Observação

    Excluir Sessão exclui todos os dados armazenados na sessão selecionada.Delete Session deletes any data stored for the selected session.
    No entanto, a exclusão de uma sessão fechada não exclui nenhum guia de plano já implantado.However, deleting a closed session does not delete any previously deployed plan guides.
    Ao excluir uma sessão que implantou guias de plano, você não poderá usar o QTA para reversão.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback.
    Nesse caso, pesquise guias de plano usando a tabela de sistema sys.plan_guides e exclua manualmente usando sp_control_plan_guide.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

  3. O ponto de entrada para uma nova sessão é a etapa Coleta de Dados.The entry point for a new session is the Data Collection step.

    Observação

    O botão Sessões retorna à página de gerenciamento de sessão, deixando a sessão ativa no estado em que se encontra.The Sessions button returns to the session management page, leaving the active session as-is.

    Essa etapa tem três subetapas:This step has three substeps:

    1. A Coleta de dados de linha de base solicita que o usuário execute o ciclo de carga de trabalho representativo para que o Repositório de Consultas possa coletar uma linha de base.Baseline Data Collection requests the user to run the representative workload cycle, so that Query Store can collect a baseline. Quando essa carga de trabalho for concluída, marque Execução de carga de trabalho concluída e clique em Avançar.Once that workload has completed, check the Done with workload run and click Next.

      Observação

      A janela do QTA pode ser fechada enquanto a carga de trabalho é executada.The QTA window can be closed while the workload runs. Quando você retornar mais tarde para a sessão que permanece no estado ativo, ela será retomada na mesma etapa em que parou.Returning to the session that remains in active state at a later time will resume from the same step where it was left off.

      Subetapa 1 da Etapa 2 do QTAQTA Step 2 Substep 1

    2. Atualizar banco de dados solicitará permissão para atualizar o nível de compatibilidade do banco de dados para o destino desejado.Upgrade Database will prompt for permission to upgrade the database compatibility level to the desired target. Para prosseguir para a próxima subetapa, clique em Sim.To proceed to the next substep, click Yes.

      Subetapa 2 da Etapa 2 do QTA – Atualizar nível de compatibilidade do banco de dadosQTA Step 2 Substep 2 - Upgrade database compatibility level

      A página a seguir confirma que o nível de compatibilidade do banco de dados foi atualizado com êxito.The following page confirms that the database compatibility level was successfully upgraded.

      Subetapa 2 da Etapa 2 do QTAQTA Step 2 Substep 2

    3. A Coleta de Dados Observados solicita que o usuário execute o ciclo de carga de trabalho representativo mais uma vez para que o Repositório de Consultas possa coletar uma linha de base de comparação que será usada para pesquisar oportunidades de otimização.Observed Data Collection requests the user to run the representative workload cycle again, so that Query Store can collect a comparative baseline that will be used to search for optimization opportunities. Conforme a carga de trabalho é executada, use o botão Atualizar para continuar atualizando a lista de consultas regredidas, caso alguma seja encontrada.As the workload executes, use the Refresh button to keep updating the list of regressed queries, if any were found. Altere o valor de Consultas a serem mostradas para limitar o número de consultas exibidas.Change the Queries to show value to limit the number of queries displayed. A ordem da lista é afetada pela Métrica (Duração ou CpuTime) e pela Agregação (Média é o padrão).The order of the list is affected by the Metric (Duration or CpuTime) and the Aggregation (Average is default). Também selecione quantas Consultas a serem mostradas.Also select how many Queries to show. Quando essa carga de trabalho for concluída, marque Execução de carga de trabalho concluída e clique em Avançar.Once that workload has completed, check the Done with workload run and click Next.

      Subetapa 3 da Etapa 2 do QTAQTA Step 2 Substep 3

      A lista contém as seguintes informações:The list contains the following information:

      • ID da ConsultaQuery ID
      • Texto da Consulta: instrução Transact-SQLTransact-SQL que pode ser expandida clicando no botão ... .Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
      • Execuções: exibe o número de execuções dessa consulta para toda a coleção da carga de trabalho.Runs: Displays the number of executions of that query for the entire workload collection.
      • Métrica de Linha de Base: a métrica selecionada (Duração ou CpuTime) em ms para a coleta de dados de linha de base antes da atualização de compatibilidade do banco de dados.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the baseline data collection before the database compatibility upgrade.
      • Métrica Observada: a métrica selecionada (Duração ou CpuTime) em ms para a coleta de dados após a atualização de compatibilidade do banco de dados.Observed Metric: The selected metric (Duration or CpuTime) in ms for the data collection after the database compatibility upgrade.
      • % de Alteração: porcentagem de alteração da métrica selecionada entre o estado anterior e posterior de atualização de compatibilidade do banco de dados.% Change: Percent change for the selected metric between the before and after database compatibility upgrade state. Um número negativo representa o valor da regressão medida para a consulta.A negative number represents the amount of measured regression for the query.
      • Ajustável: True ou False dependendo da qualificação da consulta para experimentação.Tunable: True or False depending on whether the query is eligible for experimentation.
  4. Exibir análise permite selecionar quais consultas devem ser experimentadas e encontrar oportunidades de otimização.View Analysis allows selection of which queries to experiment and find optimization opportunities. O valor Consultas a serem mostradas torna-se o escopo das consultas qualificadas para experimentação.The Queries to show value becomes the scope of eligible queries to experiment on. Depois que as consultas desejadas forem verificadas, clique em Avançar para começar a experimentação.Once the desired queries are checked, click Next to start experimentation.

    Observação

    As consultas com Ajustável = False não podem ser selecionadas para experimentação.Queries with Tunable = False cannot be selected for experimentation.

    Importante

    Um prompt avisa que depois que QTA mudar para a fase de experimentação, não será possível retornar para a página Exibir análise.A prompt advises that once QTA moves to the experimentation phase, returning to the View Analysis page will not be possible.
    Se você não selecionar todas as consultas qualificadas antes de passar para a fase de experimentação, será necessário criar uma sessão mais tarde e repetir o fluxo de trabalho.If you don't select all eligible queries before moving to the experimentation phase, you need to create a new session at a later time, and repeat the workflow. Isso exige a reinicialização do nível de compatibilidade do banco de dados para o valor anterior.This requires reset of database compatibility level to the previous value.

    Etapa 3 do QTAQTA Step 3

  5. Exibir descobertas permite selecionar as consultas para implantar a otimização proposta como um guia de plano.View Findings allows selection of which queries to deploy the proposed optimization as a plan guide.

    A lista contém as seguintes informações:The list contains the following information:

    • ID da ConsultaQuery ID
    • Texto da Consulta: instrução Transact-SQLTransact-SQL que pode ser expandida clicando no botão ... .Query Text: Transact-SQLTransact-SQL statement that can be expanded by clicking the ... button.
    • Status: exibe o estado atual de experimentação para a consulta.Status: Displays the current experimentation state for the query.
    • Métrica de Linha de Base: a métrica selecionada (Duração ou CpuTime) em ms para a consulta executada na Subetapa 3 da Etapa 2, que representa a consulta regredida após a atualização de compatibilidade do banco de dados.Baseline Metric: The selected metric (Duration or CpuTime) in ms for the query as executed in Step 2 Substep 3, representing the regressed query after the database compatibility upgrade.
    • Métrica Observada: a métrica selecionada (Duração ou CpuTime) em ms para a consulta após a experimentação, para uma otimização suficientemente boa.Observed Metric: The selected metric (Duration or CpuTime) in ms for the query after experimentation, for a good enough proposed optimization.
    • % de Alteração: porcentagem de alteração da métrica selecionada entre o estado de experimentação anterior e posterior, que representa o valor da melhoria medida para a consulta com a otimização proposta.% Change: Percent change for the selected metric between the before and after experimentation state, representing the amount of measured improvement for the query with the proposed optimization.
    • Opção de Consulta: link para a dica proposta que melhora a métrica de execução de consulta.Query Option: Link to the proposed hint that improves query execution metric.
    • Pode Implantar: True ou False, dependendo se a otimização de consulta proposta pode ser implantada como um guia de plano.Can Deploy: True or False depending on whether the proposed query optimization can be deployed as a plan guide.

    Etapa 4 do QTAQTA Step 4

  6. Verificação mostra o status de implantação das consultas já selecionadas para essa sessão.Verification shows the deployment status of previously selected queries for this session. A lista nesta página diferencia-se da página anterior pela alteração da coluna Pode implantar para Pode reverter.The list in this page differs from the previous page by changing the Can Deploy column to Can Rollback. Essa coluna pode ser True ou False dependendo se a otimização de consulta implantada pode ser revertida e seu guia de plano e removido.This column can be True or False depending on whether the deployed query optimization can be rolled back and its plan guide removed.

    Etapa 5 do QTAQTA Step 5

    Se em um momento posterior houver a necessidade de reverter para uma otimização proposta, selecione a consulta relevante e clique em Reverter.If at a later date there is a need to roll back on a proposed optimization, then select the relevant query and click Rollback. Esse guia de plano de consulta será removido e a lista será atualizada para remover a consulta revertida.That query plan guide is removed and the list updated to remove the rolled back query. Observe na imagem abaixo que a consulta 8 foi removida.Note in the picture below that query 8 was removed.

    Etapa 5 do QTA – ReversãoQTA Step 5 - Rollback

    Observação

    A exclusão de uma sessão fechada não exclui nenhum guia de plano já implantado.Deleting a closed session does not delete any previously deployed plan guides.
    Ao excluir uma sessão que implantou guias de plano, você não poderá usar o QTA para reversão.If you delete a session that had deployed plan guides, then you cannot use QTA to rollback.
    Nesse caso, pesquise guias de plano usando a tabela de sistema sys.plan_guides e exclua manualmente usando sp_control_plan_guide.Instead, search for plan guides using the sys.plan_guides system table, and delete manually using sp_control_plan_guide.

PermissõesPermissions

Requer a associação à função db_owner.Requires membership of db_owner role.

Consulte TambémSee Also

Níveis de compatibilidade e atualizações do Mecanismo de Banco de Dados Compatibility Levels and Database Engine Upgrades
Ferramentas para monitoramento e ajuste de desempenho Performance Monitoring and Tuning Tools
Monitorando o desempenho com o repositório de consultas Monitoring Performance By Using the Query Store
Alterar o modo de compatibilidade do banco de dados e usar o Repositório de Consultas Change the Database Compatibility Mode and Use the Query Store
Sinalizadores de rastreamento Trace flags
Dicas de consulta USE HINT USE HINT query hints
Estimador de Cardinalidade Cardinality Estimator
Ajuste automáticoAutomatic Tuning