Compartilhar via


Consumo de recursos SQL do Synapse

Este artigo descreve os modelos de consumo de recursos do SQL do Synapse.

Pool de SQL sem servidor

O pool de SQL sem servidor é um serviço de pagamento por consulta que não exige que você escolha o tamanho certo. O sistema se ajusta automaticamente com base nos seus requisitos, liberando você do gerenciamento da infraestrutura e escolhendo o tamanho certo para a sua solução.

Pool de SQL dedicado – DWUs (Unidades de Data Warehouse) e cDWUs (Unidades de Data Warehouse) de computação

Recomendações sobre como escolher o número ideal de unidades de data warehouse (DWUs) para otimizar o preço e o desempenho e como alterar o número de unidades.

Unidades de Data Warehouse

Um pool de SQL do Synapse representa uma coleção de recursos analíticos que estão sendo provisionados. Os recursos analíticos são definidos como uma combinação de CPU, memória e E/S. Esses três recursos são agrupados em unidades de escala de computação chamadas DWUs (Unidades de Data Warehouse). Uma DWU representa uma medida abstrata e normalizada de recursos de computação e desempenho. Uma alteração no nível de serviço altera o número de DWUs disponíveis para o sistema. Por sua vez, essa alteração ajusta o desempenho e o custo do seu sistema.

Para obter maior desempenho, você pode aumentar o número de unidades de data warehouse. Para obter menos desempenho, reduza as unidades de data warehouse. Os custos de armazenamento e computação são cobrados separadamente, portanto, a alteração das unidades do data warehouse não afeta os custos de armazenamento.

O desempenho das unidades de data warehouse é baseado nestas métricas de carga de trabalho do data warehouse:

  • A rapidez com que uma consulta de data warehouse padrão pode verificar um grande número de linhas e, em seguida, executar uma agregação complexa. Essa operação é intensiva em E/S e CPU.
  • A rapidez com que o data warehouse pode ingerir dados de Blobs de Armazenamento do Azure ou do Azure Data Lake. Essa operação consome muita rede e CPU.
  • A rapidez com que o CREATE TABLE AS SELECT comando T-SQL pode copiar uma tabela. Essa operação envolve a leitura de dados do armazenamento, a distribuição entre os nós do dispositivo e a gravação no armazenamento novamente. Essa operação exige muita CPU, E/S e rede.

Aumentando as DWUs:

  • Altera linearmente o desempenho do sistema para varreduras, agregações e instruções CTAS
  • Aumenta o número de leitores e gravadores para operações de carregamento do PolyBase
  • Aumenta o número máximo de consultas simultâneas e slots de simultaneidade.

Objetivo de Nível de Serviço

O SLO (Objetivo de Nível de Serviço) é a configuração de escalabilidade que determina o custo e o nível de desempenho do seu data warehouse. Os níveis de serviço para Gen2 são medidos em unidades de data warehouse de computação (cDWU), por exemplo, DW2000c. Os níveis de serviço Gen1 são medidos em DWUs, por exemplo, DW2000.

O SLO (Objetivo de Nível de Serviço) é a configuração de escalabilidade que determina o custo e o nível de desempenho do seu data warehouse. Os níveis de serviço para o pool de SQL dedicado Gen2 são medidos em unidades de data warehouse (DWU), por exemplo, DW2000c.

Observação

O Azure Synapse Analytics Gen2 adicionou recentemente recursos de escala adicionais para dar suporte a camadas de computação tão baixas quanto 100 cDWU. Os data warehouses existentes atualmente na geração 1 que exigem as camadas de computação mais baixas agora podem atualizar para a geração 2 nas regiões que estão disponíveis no momento sem custo adicional. Se sua região ainda não for compatível, você ainda poderá atualizar para uma região compatível. Para saber mais, confira Atualizar para Gen2.

No T-SQL, a configuração SERVICE_OBJECTIVE determina o nível de serviço e a camada de desempenho do pool de SQL dedicado.

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

Níveis de desempenho e unidades de data warehouse

Cada camada de desempenho usa uma unidade de medida ligeiramente diferente para suas unidades de data warehouse. Essa diferença é refletida na fatura, pois a unidade de escala se traduz diretamente em faturamento.

  • Os data warehouses Gen1 são medidos em DWUs (Unidades de Data Warehouse).
  • Os data warehouses Gen2 são medidos em cDWUs (Unidades de Data Warehouse de computação).

As DWUs e as cDWUs dão suporte ao dimensionamento da computação para cima ou para baixo e à pausa da computação quando você não precisa usar o data warehouse. Essas operações são todas sob demanda. O Gen2 usa um cache local baseado em disco nos nós de computação para melhorar o desempenho. Quando você dimensiona ou pausa o sistema, o cache é invalidado e, portanto, um período de aquecimento do cache é necessário antes que o desempenho ideal seja alcançado.

À medida que você aumenta as unidades de data warehouse, aumenta linearmente os recursos de computação. O Gen2 fornece o melhor desempenho de consulta e a escala mais alta. Os sistemas Gen2 também fazem o máximo uso do cache.

Limites de capacidade

Cada SQL Server (por exemplo, myserver.database.windows.net) tem uma cota de DTU (Unidade de Transação de Banco de Dados) que permite um número específico de unidades de data warehouse. Para obter mais informações, consulte os limites de capacidade de gerenciamento de carga de trabalho.

Avalie o número de unidades de data warehouse necessárias

O número ideal de unidades de data warehouse depende muito da sua carga de trabalho e da quantidade de dados que você carregou no sistema.

Etapas para encontrar a melhor DWU para sua carga de trabalho:

  1. Comece selecionando uma DWU menor.
  2. Monitore o desempenho do aplicativo à medida que testa os carregamentos de dados no sistema, observando o número de DWUs selecionadas em comparação com o desempenho observado.
  3. Identifique quaisquer requisitos adicionais para períodos periódicos de pico de atividade. As cargas de trabalho que mostram picos e vales significativos na atividade podem precisar ser dimensionadas com frequência.

O pool de SQL é um sistema de expansão que pode provisionar grandes quantidades de computação e consultar quantidades consideráveis de dados. Para ver seus verdadeiros recursos de dimensionamento, especialmente em DWUs maiores, recomendamos dimensionar o conjunto de dados à medida que você dimensiona para garantir que você tenha dados suficientes para alimentar as CPUs. Para testes de escala, recomendamos usar pelo menos 1 TB.

Observação

O desempenho da consulta só aumenta com mais paralelização se o trabalho puder ser dividido entre nós de computação. Se você achar que o dimensionamento não está alterando seu desempenho, talvez seja necessário ajustar o design da tabela e/ou suas consultas. Para obter diretrizes de ajuste de consulta, consulte Gerenciar consultas do usuário.

Permissões

A alteração das unidades do data warehouse requer as permissões descritas em ALTER DATABASE.

As funções internas do Azure, como Colaborador do Banco de Dados SQL e Colaborador do SQL Server, podem alterar as configurações do DWU.

Exibir as configurações atuais de DWU

Para exibir a configuração atual da DWU:

  1. Abra o Pesquisador de Objetos do SQL Server no Visual Studio.
  2. Conecte-se ao banco de dados mestre associado ao SQL Server lógico.
  3. Selecione na sys.database_service_objectives exibição de gerenciamento dinâmico. Este é um exemplo:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

Alterar unidades de data warehouse

Portal do Azure

Para alterar DWUs:

  1. Abra o portal do Azure, abra seu banco de dados e selecione Escala.

  2. Em Escala, mova o controle deslizante para a esquerda ou para a direita para alterar a configuração de DWU.

  3. Clique em Salvar. Será exibida uma mensagem de confirmação. Selecione sim para confirmar ou não para cancelar.

PowerShell

Observação

Recomendamos que você use o módulo do Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Para alterar as DWUs, use o cmdlet Set-AzSqlDatabase do PowerShell. O exemplo a seguir define o objetivo de nível de serviço como DW1000 para o banco de dados MySQLDW hospedado no servidor MyServer.

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

Para obter mais informações, consulte Cmdlets do PowerShell para o Azure Synapse Analytics

T-SQL

Com o T-SQL, você pode exibir as configurações atuais de DWU, alterar as configurações e verificar o progresso.

Para alterar as DWUs:

  1. Conecte-se ao banco de dados mestre associado ao seu servidor.
  2. Use a instrução ALTER DATABASE TSQL. O exemplo a seguir define o objetivo de nível de serviço como DW1000c para o banco de dados MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

REST APIs

Para alterar as DWUs, use a API REST Criar ou Atualizar Banco de Dados . O exemplo a seguir define o objetivo de nível de serviço como DW1000c para o banco de dados MySQLDW, que está hospedado no servidor MyServer. O servidor está em um grupo de recursos do Azure chamado ResourceGroup1.

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": DW1000
    }
}

Para obter mais exemplos de API REST, consulte APIs REST para Azure Synapse Analytics.

Verificar o status das alterações de DWU

As alterações de DWU podem levar vários minutos para serem concluídas. Se você estiver dimensionando automaticamente, considere implementar a lógica para garantir que determinadas operações tenham sido concluídas antes de prosseguir com outra ação.

Verificar o estado do banco de dados por meio de vários endpoints permite que você implemente corretamente a automação. O portal fornece notificação após a conclusão de uma operação e o estado atual dos bancos de dados, mas não permite a verificação programática do estado.

Você não pode verificar o estado do banco de dados para operações de expansão com o portal do Azure.

Para verificar o status das alterações de DWU:

  1. Conecte-se ao banco de dados mestre associado ao seu servidor.
  2. Envie a consulta a seguir para verificar o estado do banco de dados.
SELECT    *
FROM      sys.databases
;
  1. Envie a seguinte consulta para verificar o status da operação
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

Essa DMV retorna informações sobre várias operações de gerenciamento em seu pool de SQL dedicado, como a operação e o estado da operação, que é IN_PROGRESS ou COMPLETED.

O fluxo de trabalho de escalabilidade

Quando você inicia uma operação de dimensionamento, o sistema primeiro elimina todas as sessões abertas, revertendo todas as transações abertas para garantir um estado consistente. Para operações de escala, o dimensionamento só ocorre após a conclusão dessa reversão transacional.

  • Para uma operação de expansão, o sistema desanexa todos os nós de computação, provisiona os nós de computação adicionais e, em seguida, reconecta à camada de armazenamento.
  • Para uma operação de redução vertical, o sistema desanexa todos os nós de computação e, em seguida, reconecta apenas os nós necessários à camada de armazenamento.

Próximas etapas

Para saber mais sobre como gerenciar o desempenho, consulte Classes de recursos para gerenciamento de carga de trabalho e Limites de memória e simultaneidade.