Diagnosticar e solucionar problemas de alta CPU em Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

O Banco de Dados SQL do Azure fornece ferramentas integradas para identificar as causas do alto uso da CPU e otimizar o desempenho da carga de trabalho. Use essas ferramentas para solucionar problemas de alto uso da CPU durante a ocorrência ou depois do incidente. Você também pode habilitar o ajuste automático para reduzir proativamente o uso da CPU ao longo do tempo no seu banco de dados. Este artigo ensina a diagnosticar e solucionar problemas de alto uso da CPU com ferramentas integradas do Banco de Dados SQL do Azure e explica quando adicionar recursos de CPU.

Compreender a contagem de vCore

Ao diagnosticar um incidente de alto uso da CPU, é importante entender o número de vCores (núcleos virtuais) disponíveis para o banco de dados. Um vCore é equivalente a uma CPU lógica. O número de vCores ajuda a entender os recursos de CPU disponíveis para o banco de dados.

Identificar a contagem de vCore no portal do Azure

Você pode identificar rapidamente a contagem de vCore de um banco de dados no portal do Azure se estiver usando uma camada de serviço baseada em vCore com a camada de computação provisionada. Nesse caso, o tipo de preço listado do banco de dados na página Visão geral vai incluir a contagem de vCore. Por exemplo, o tipo de preço de um banco de dados pode ser "Uso Geral: série Standard (Gen5), 16 vCores".

Para bancos de dados na camada de computação sem servidor, a contagem de vCore sempre será equivalente à configuração de vCore máxima. A contagem de VCore será mostrada no tipo de preço listado do banco de dados na página Visão geral. Por exemplo, o tipo de preço de um banco de dados pode ser "Uso Geral: sem servidor, série Standard (Gen5), 16 vCores".

Se você estiver usando um banco de dados no modelo de compra baseado em DTU, precisará usar Transact-SQL para consultar a contagem de vCores do banco de dados.

Identificar a contagem de vCore com o Transact-SQL

Você pode identificar a contagem de vCore atual dos bancos de dados com o Transact-SQL. É possível executar o Transact-SQL em Banco de Dados SQL do Azure com o SQL Server Management Studio (SSMS), o Azure Data Studio ou o Editor de consultas do portal do Azure.

Conecte o banco de dados e execute a seguinte consulta:

SELECT 
    COUNT(*) as vCores
FROM sys.dm_os_schedulers
WHERE status = N'VISIBLE ONLINE';
GO

Identificar as causas do alto uso da CPU

Você pode medir e analisar o uso da CPU no portal do Azure, usando as ferramentas interativas do Repositório de Consultas no SSMS e as consultas do Transact-SQL no SSMS e no Azure Data Studio.

O portal do Azure e o Repositório de Consultas mostram estatísticas de execução, como métricas de CPU, para consultas concluídas. Se você está enfrentando um incidente de alto uso da CPU que pode ser causado por uma ou mais consultas de longa duração em andamento, identifique as consultas em execução no momento com o Transact-SQL.

As causas comuns de alto uso incomum ou novo uso da CPU são:

  • Novas consultas na carga de trabalho que usam uma grande quantidade de CPU.
  • Aumento na frequência das consultas em execução regular.
  • Regressão do plano de consulta, incluindo regressão devido a problemas de PSP (plano sensível a parâmetros), resultando em uma ou mais consultas que consomem mais CPU.
  • Aumento significativo na compilação ou recompilação de planos de consulta.
  • Bancos de dados em que as consultas usam paralelismo excessivo.

Para entender o que está causando o incidente de alto uso da CPU, identifique quando o alto uso da CPU está ocorrendo no banco de dados e as principais consultas que estão usando a CPU no momento.

Examine:

Observação

O Banco de Dados SQL do Azure requer recursos de computação para implementar funcionalidades de serviço principais, como alta disponibilidade e recuperação de desastre, backup e restauração de banco de dados, monitoramento, Repositório de Consultas, ajuste automático etc. O uso desses recursos de computação pode ser particularmente perceptível em bancos de dados com contagem de vCore baixa ou bancos de dados em pools elásticos densos. Saiba mais em Gerenciamento de recursos no Banco de dados SQL do Azure.

Use o portal do Azure para rastrear várias métricas de CPU, como a porcentagem de CPU disponível usada pelo banco de dados ao longo do tempo. O portal do Azure combina métricas de CPU com informações do Repositório de Consultas do banco de dados, o que permite identificar quais consultas consumiram a CPU no banco de dados em um determinado momento.

Siga estas etapas para encontrar métricas de porcentagem da CPU.

  1. Navegue até o banco de dados no portal do Azure.
  2. Em Desempenho Inteligente no menu esquerdo, escolha Análise de Desempenho de Consultas.

O modo de exibição padrão da Análise de Desempenho de Consultas mostra 24 horas de dados. O uso da CPU é mostrado como uma porcentagem do total de CPU disponível usada no banco de dados.

As cinco principais consultas em execução nesse período são exibidas em barras verticais acima do gráfico de uso da CPU. Selecione uma faixa de tempo no gráfico ou use o menu Personalizar para ver períodos de tempo específicos. Você também pode aumentar o número de consultas exibidas.

Screenshot shows Query Performance Insight in the Azure portal.

Selecione cada ID de consulta que exibe a CPU alta para abrir os detalhes da consulta. Os detalhes incluem texto de consulta com o histórico de desempenho da consulta. Analise se a CPU aumentou recentemente para a consulta.

Anote a ID da consulta para investigar ainda mais o plano de consulta usando o Repositório de Consultas na seção a seguir.

Revisar os planos de consulta das principais consultas identificadas no portal do Azure

Siga estas etapas para usar uma ID de consulta nas ferramentas interativas do Repositório de Consultas do SSMS e examinar o plano de execução da consulta ao longo do tempo.

  1. Abra o SSMS.
  2. Conecte o Banco de Dados SQL do Azure no Pesquisador de Objetos.
  3. Expanda o nó do banco de dados no Pesquisador de Objetos.
  4. Expanda a pasta Repositório de Consultas.
  5. Abra o painel Consultas Rastreadas.
  6. Insira a ID da consulta na caixa Rastreamento de consulta na parte superior esquerda da tela e pressione Enter.
  7. Se necessário, selecione Configurar para ajustar o intervalo de tempo de acordo com a hora em que o alto uso da CPU estava ocorrendo.

A página mostra os planos de execução e as métricas relacionadas à consulta nas últimas 24 horas.

Identificar consultas em execução no momento com o Transact-SQL

O Transact-SQL permite identificar consultas em execução no momento com o tempo de CPU que elas usaram até agora. Você também pode usar o Transact-SQL para consultar o uso recente da CPU em seu banco de dados, as principais consultas por CPU e as consultas compiladas com mais frequência.

É possível consultar as métricas de CPU com o SQL Server Management Studio (SSMS), o Azure Data Studio ou o Editor de consultas do portal do Azure. Quando você usar o SSMS ou o Azure Data Studio, abra uma nova janela de consulta e conecte-a ao banco de dados (não ao banco de dados master).

Encontre as consultas em execução com planos de uso e execução da CPU executando a seguinte consulta. O tempo da CPU é retornado em milissegundos.

SELECT
    req.session_id,
    req.status,
    req.start_time,
    req.cpu_time AS 'cpu_time_ms',
    req.logical_reads,
    req.dop,
    s.login_name,
    s.host_name,
    s.program_name,
    object_name(st.objectid,st.dbid) 'ObjectName',
    REPLACE (REPLACE (SUBSTRING (st.text,(req.statement_start_offset/2) + 1,
        ((CASE req.statement_end_offset    WHEN -1    THEN DATALENGTH(st.text) 
        ELSE req.statement_end_offset END - req.statement_start_offset)/2) + 1),
        CHAR(10), ' '), CHAR(13), ' ') AS statement_text,
    qp.query_plan,
    qsx.query_plan as query_plan_with_in_flight_statistics
FROM sys.dm_exec_requests as req  
JOIN sys.dm_exec_sessions as s on req.session_id=s.session_id
CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as st
OUTER APPLY sys.dm_exec_query_plan(req.plan_handle) as qp
OUTER APPLY sys.dm_exec_query_statistics_xml(req.session_id) as qsx
ORDER BY req.cpu_time desc;
GO

Essa consulta retorna duas cópias do plano de execução. A coluna query_plan contém o plano de execução de sys.dm_exec_query_plan. Essa versão do plano de consulta contém apenas estimativas de contagem de linhas e não contém estatísticas de execução.

Se a coluna query_plan_with_in_flight_statistics retornar um plano de execução, este plano fornecerá mais informações. A coluna query_plan_with_in_flight_statistics retorna dados de sys.dm_exec_query_statistics_xml, que inclui estatísticas de execução "em andamento", como o número real de linhas retornadas até agora por uma consulta em execução no momento.

Analisar métricas de uso da CPU na última hora

A consulta a seguir de sys.dm_db_resource_stats retorna o uso médio da CPU em intervalos de 15 segundos durante a última hora, praticamente.

SELECT
    end_time,
    avg_cpu_percent,
    avg_instance_cpu_percent
FROM sys.dm_db_resource_stats
ORDER BY end_time DESC; 
GO

É importante não se concentrar apenas na coluna avg_cpu_percent. A coluna avg_instance_cpu_percent inclui a CPU usada pelo usuário e pelas cargas de trabalho internas. Quando avg_instance_cpu_percent está perto de 100%, os recursos da CPU são saturados. Nesse caso, solucione os problemas de alto uso de CPU se a taxa de transferência do aplicativo for insuficiente ou a latência de consulta for alta.

Saiba mais em Gerenciamento de recursos no Banco de dados SQL do Azure.

Revise os exemplos em sys.dm_db_resource_stats para obter mais consultas.

Consultar as 15 principais consultas recentes por uso da CPU

O Repositório de Consultas rastreia estatísticas de execução, inclusive o uso da CPU, para consultas. A consulta a seguir retorna as 15 principais consultas executadas nas últimas 2 horas, classificadas pelo uso da CPU. O tempo da CPU é retornado em milissegundos.

WITH AggregatedCPU AS 
    (SELECT
        q.query_hash, 
        SUM(count_executions * avg_cpu_time / 1000.0) AS total_cpu_ms, 
        SUM(count_executions * avg_cpu_time / 1000.0)/ SUM(count_executions) AS avg_cpu_ms, 
        MAX(rs.max_cpu_time / 1000.00) AS max_cpu_ms, 
        MAX(max_logical_io_reads) max_logical_reads, 
        COUNT(DISTINCT p.plan_id) AS number_of_distinct_plans, 
        COUNT(DISTINCT p.query_id) AS number_of_distinct_query_ids, 
        SUM(CASE WHEN rs.execution_type_desc='Aborted' THEN count_executions ELSE 0 END) AS aborted_execution_count, 
        SUM(CASE WHEN rs.execution_type_desc='Regular' THEN count_executions ELSE 0 END) AS regular_execution_count, 
        SUM(CASE WHEN rs.execution_type_desc='Exception' THEN count_executions ELSE 0 END) AS exception_execution_count, 
        SUM(count_executions) AS total_executions, 
        MIN(qt.query_sql_text) AS sampled_query_text
    FROM sys.query_store_query_text AS qt
    JOIN sys.query_store_query AS q ON qt.query_text_id=q.query_text_id
    JOIN sys.query_store_plan AS p ON q.query_id=p.query_id
    JOIN sys.query_store_runtime_stats AS rs ON rs.plan_id=p.plan_id
    JOIN sys.query_store_runtime_stats_interval AS rsi ON rsi.runtime_stats_interval_id=rs.runtime_stats_interval_id
    WHERE 
            rs.execution_type_desc IN ('Regular', 'Aborted', 'Exception') AND 
        rsi.start_time>=DATEADD(HOUR, -2, GETUTCDATE())
     GROUP BY q.query_hash), 
OrderedCPU AS 
    (SELECT *, 
    ROW_NUMBER() OVER (ORDER BY total_cpu_ms DESC, query_hash ASC) AS RN
    FROM AggregatedCPU)
SELECT *
FROM OrderedCPU AS OD
WHERE OD.RN<=15
ORDER BY total_cpu_ms DESC;
GO

Essa consulta se agrupa pelo valor de hash da consulta. Se você encontrar um valor alto na coluna number_of_distinct_query_ids, investigue se uma consulta executada com frequência não está corretamente parametrizada. As consultas não parametrizadas podem ser compiladas em cada execução, o que consome CPU significativa e afeta o desempenho do Repositório de Consultas.

Para saber mais sobre uma consulta individual, anote o hash da consulta e use-o para identificar o uso da CPU e o plano de consulta de um determinado hash de consulta.

Consultar as consultas compiladas com mais frequência por hash de consulta

A compilação de um plano de consulta é um processo intensivo da CPU. O Banco de Dados SQL do Azure armazena planos em cache na memória para reutilização. Algumas consultas podem ser compiladas com frequência quando não são parametrizadas ou se as dicas RECOMPILE forçam a recompilação.

O Repositório de Consultas rastreia o número de vezes que as consultas são compiladas. Execute a seguinte consulta para identificar as 20 principais consultas no Repositório de Consultas por contagem de compilação, junto com o número médio de compilações por minuto:

SELECT TOP (20)
    query_hash,
    MIN(initial_compile_start_time) as initial_compile_start_time,
    MAX(last_compile_start_time) as last_compile_start_time,
    CASE WHEN DATEDIFF(mi,MIN(initial_compile_start_time), MAX(last_compile_start_time)) > 0
        THEN 1.* SUM(count_compiles) / DATEDIFF(mi,MIN(initial_compile_start_time), 
            MAX(last_compile_start_time)) 
        ELSE 0 
        END as avg_compiles_minute,
    SUM(count_compiles) as count_compiles
FROM sys.query_store_query AS q
GROUP BY query_hash
ORDER BY count_compiles DESC;
GO

Para saber mais sobre uma consulta individual, anote o hash da consulta e use-o para identificar o uso da CPU e o plano de consulta de um determinado hash de consulta.

Identificar o uso da CPU e o plano de consulta de um determinado hash de consulta

Execute a seguinte consulta para encontrar a ID de consulta individual, o texto de consulta e os planos de execução de consulta de um determinado query_hash. O tempo da CPU é retornado em milissegundos.

Substitua o valor da variável @query_hash por um query_hash válido da carga de trabalho.

declare @query_hash binary(8);

SET @query_hash = 0x6557BE7936AA2E91;

with query_ids as (
    SELECT
        q.query_hash,
        q.query_id,
        p.query_plan_hash,
        SUM(qrs.count_executions) * AVG(qrs.avg_cpu_time)/1000. as total_cpu_time_ms,
        SUM(qrs.count_executions) AS sum_executions,
        AVG(qrs.avg_cpu_time)/1000. AS avg_cpu_time_ms
    FROM sys.query_store_query q
    JOIN sys.query_store_plan p on q.query_id=p.query_id
    JOIN sys.query_store_runtime_stats qrs on p.plan_id = qrs.plan_id
    WHERE q.query_hash = @query_hash
    GROUP BY q.query_id, q.query_hash, p.query_plan_hash)
SELECT qid.*,
    qt.query_sql_text,
    p.count_compiles,
    TRY_CAST(p.query_plan as XML) as query_plan
FROM query_ids as qid
JOIN sys.query_store_query AS q ON qid.query_id=q.query_id
JOIN sys.query_store_query_text AS qt on q.query_text_id = qt.query_text_id
JOIN sys.query_store_plan AS p ON qid.query_id=p.query_id and qid.query_plan_hash=p.query_plan_hash
ORDER BY total_cpu_time_ms DESC;
GO

Essa consulta retorna uma linha de cada variação de um plano de execução do query_hash em todo o histórico do Repositório de Consultas. Os resultados são classificados pelo tempo total da CPU.

Usar ferramentas interativas do Repositório de Consultas para rastrear o histórico do uso da CPU

Se você preferir usar ferramentas gráficas, siga estas etapas e use as ferramentas interativas do Repositório de Consultas no SSMS.

  1. Abra o SSMS e conecte-se ao banco de dados no Pesquisador de Objetos.
  2. Expanda o nó do banco de dados no Pesquisador de Objetos
  3. Expanda a pasta Repositório de Consultas.
  4. Abra o painel Consumo de Recurso Geral.

O tempo total da CPU do banco de dados no último mês em milissegundos é mostrado na parte inferior esquerda do painel. No modo de exibição padrão, o tempo da CPU é agregado por dia.

Screenshot shows the Overall Resource Consumption view of Query Store in SSMS.

Selecione Configurar no canto superior direito do painel para selecionar outro período. Também é possível alterar a unidade de agregação. Por exemplo, você pode optar por ver os dados em um intervalo de datas específico e agregar os dados por hora.

Usar ferramentas interativas do Repositório de Consultas para identificar as principais consultas por tempo de CPU

Selecione uma barra no gráfico para analisar as consultas em execução em um período específico. O painel Principais Consultas de Consumo de Recursos é aberto. Ou abra Principais Consultas de Consumo de Recursos no nó do Repositório de Consultas em seu banco de dados no Pesquisador de Objetos diretamente.

Screenshot shows the Top Resource Consuming Queries pane for Query Store in S S M S.

No modo de exibição padrão, o painel Principais Consultas de Consumo de Recursos mostra consultas por Duração (ms). Às vezes, a duração pode ser menor do que o tempo da CPU: as consultas que usam o paralelismo podem usar muito mais tempo de CPU do que a duração geral. A duração também pode ser maior do que o tempo da CPU se os tempos de espera são significativos. Para ver consultas por tempo de CPU, selecione o menu suspenso Métrica na parte superior esquerda do painel e escolha Tempo da CPU (ms).

Cada barra no quadrante superior esquerdo representa uma consulta. Selecione uma barra para ver os detalhes dessa consulta. O quadrante superior direito da tela mostra o numero de planos de execução no Repositório de Consultas referente a essa consulta e os mapeia de acordo com o momento em que foram executados e com a quantidade usada da métrica selecionada. Selecione cada ID do Plano para controlar qual plano de execução de consulta é exibido na metade inferior da tela.

Observação

Para saber como interpretar as exibições do Repositório de Consultas e as formas que aparecem na exibição Principais Consumidores de Recursos, consulte Melhores práticas com o Repositório de Consultas

Reduzir o uso da CPU

Parte da sua abordagem de solução de problemas inclui saber mais sobre as consultas identificadas na seção anterior. Para reduzir o uso da CPU, você pode ajustar índices, modificar os padrões dos seus aplicativos e ajustar consultas e configurações relacionadas à CPU no banco de dados.

Considere as seguintes estratégias nesta seção.

Reduzir o uso da CPU com ajuste automático de índice

O ajuste de índice efetivo reduz o uso da CPU para muitas consultas. Índices otimizados reduzem as leituras lógicas e físicas de uma consulta. Geralmente, isso diminui o trabalho da consulta.

O Banco de Dados SQL do Azure oferece o gerenciamento automático de índices para cargas de trabalho em réplicas primárias. O gerenciamento automático de índice usa o aprendizado de máquina para monitorar a carga de trabalho e otimizar índices não clusterizados baseados em disco de armazenamento de rowstore no banco de dados.

Revise as recomendações de desempenho, como as recomendações de índice, no portal do Azure. Você pode aplicar essas recomendações manualmente ou habilitar a opção de ajuste automático CREATE INDEX para criar e verificar o desempenho de novos índices em seu banco de dados.

Reduzir o uso da CPU com a correção de plano automática (forçar plano)

Outra causa comum de incidentes de alto uso da CPU é a regressão de escolha do plano de execução. O Banco de Dados SQL do Azure oferece a opção de ajuste automático de forçar plano para identificar regressões em planos de execução de consultas em cargas de trabalho em réplicas primárias. Quando esse recurso de ajuste automático está habilitado, o Banco de Dados SQL do Azure testa se forçar um plano de execução de consulta resulta em um desempenho aprimorado confiável nas consultas com regressão do plano de execução.

Se o banco de dados foi criado depois de março de 2020, a opção de ajuste automático de forçar plano foi habilitada automaticamente. Se o banco de dados foi criado antes dessa data, talvez você queira habilitar a opção de ajuste automático de forçar plano.

Ajustar índices manualmente

Use os métodos descritos em Identificar as causas do alto uso da CPU e descubra planos de consulta para as suas consultas que consomem mais CPU. Esses planos de execução ajudarão você a identificar e adicionar índices não clusterizados para acelerar suas consultas.

Cada índice não clusterizado baseado em disco de armazenamento no banco de dados exige espaço de armazenamento e deve ser mantido pelo mecanismo do SQL. Quando possível, modifique os índices em vez de adicionar novos índices e garanta que os novos índices reduzam o uso da CPU. Para ver uma visão geral dos índices não clusterizados, confira Diretrizes de criação de índice não clusterizado.

Para algumas cargas de trabalho, os índices columnstore podem ser a melhor opção para reduzir a CPU de consultas de leitura frequentes. Confira Índices columnstore: diretrizes para ver recomendações de alto nível sobre cenários em que os índices de armazenamento de colunas podem ser adequados.

Ajustar as configurações de banco de dados, aplicativo e consultas

Ao examinar suas principais consultas, você pode encontrar antipadrões de aplicativo, como texto complexo, cargas de trabalho que se beneficiariam de fragmentação e design de acesso a banco de dados inferior. Para cargas de trabalho com muita leitura, use réplicas somente leitura para descarregar cargas de trabalho de consulta somente leitura e armazenamento em cache de camada de aplicativo como estratégias de longo prazo para dimensionar dados de leitura frequentes.

Você também pode optar por ajustar manualmente a CPU superior usando consultas identificadas na carga de trabalho. As opções de ajuste manual incluem a reescrita de instruções Transact-SQL, forçar planos no Repositório de Consultas e aplicar dicas de consulta.

Se você identificar casos em que as consultas às vezes usam um plano de execução que não seja ideal para o desempenho, revise as soluções em consultas com problemas de PSP (plano sensível a parâmetros)

Se você identificar consultas não parametrizadas com um alto número de planos, parametrize essas consultas, declarando totalmente os tipos de dados do parâmetro, incluindo comprimento e precisão. Para isso, modifique as consultas, criando um guia de plano para forçar a parametrização de uma consulta específica, ou habilite a parametrização forçada no nível do banco de dados.

Se você identificar consultas com altas taxas de compilação, identifique o que causa a compilação frequente. A causa mais comum de compilação frequente são as dicas RECOMPILE. Sempre que possível, identifique quando a dica RECOMPILE foi adicionada e qual problema ela foi destinada a resolver. Investigue se uma solução alternativa de ajuste de desempenho pode ser implementada para fornecer um desempenho consistente para consultas em execução com frequência sem uma dica RECOMPILE.

Reduzir o uso da CPU ajustando o grau máximo de paralelismo

A configuração do MAXDOP (grau máximo de paralelismo) controla o paralelismo dentro da consulta no mecanismo do banco de dados. Valores mais altos de MAXDOP geralmente resultam em mais threads paralelos por consulta e execução de consulta mais rápida.

Em alguns casos, um grande número de consultas paralelas em execução ao mesmo tempo pode provocar a lentidão da carga de trabalho e aumentar o uso da CPU. O paralelismo excessivo ocorre com mais frequência em bancos de dados com um grande número de vCores, em que o MAXDOP é definido como um número alto ou como zero. Quando o MAXDOP está definido como 0, o mecanismo de banco de dados define o número de agendadores a serem usados por threads paralelos para o número total de núcleos lógicos ou 64, o que for menor.

Você pode identificar a configuração do grau máximo de paralelismo do seu banco de dados com o Transact-SQL. Conecte o banco de dados com o SSMS ou o Azure Data Studio e execute a seguinte consulta:

SELECT 
    name, 
    value, 
    value_for_secondary, 
    is_value_default 
FROM sys.database_scoped_configurations
WHERE name=N'MAXDOP';
GO

Experimente fazer pequenas alterações na configuração MAXDOP no nível do banco de dados ou modifique as consultas problemáticas individuais para que usem um MAXDOP não padrão usando uma dica de consulta. Para obter mais informações, confira os exemplos em configurar o grau máximo de paralelismo.

Quando adicionar recursos de CPU

Você pode descobrir que as consultas e índices da carga de trabalho estão ajustadas corretamente ou que o ajuste de desempenho requer alterações que não podem ser feitas no curto prazo devido a processos internos ou a outros motivos. Adicionar mais recursos de CPU pode ser benéfico para esses bancos de dados. Você pode dimensionar os recursos de banco de dados com tempo de inatividade mínimo.

Você pode adicionar mais recursos de CPU ao Banco de Dados SQL do Azure configurando a contagem de vCores ou a configuração de hardware dos bancos de dados usando o modelo de compra de vCore.

No modelo de compra baseado em DTU, você pode elevar a camada de serviço e aumentar o número de DTUs (unidades de transação do banco de dados). A DTU representa uma medida misturada de CPU, memória, leituras e gravações. Um benefício do modelo de compra vCore é que ele permite um controle mais granular sobre o hardware em uso e o número de vCores. Você pode migrar o Banco de Dados SQL do Azure do modelo baseado em DTU para o modelo baseado em vCore para mudar de modelo de compra.

Saiba mais sobre o monitoramento e o ajuste de desempenho do Banco de Dados SQL do Azure nos seguintes artigos: