Consumo de recursos do SQL do Synapse

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

Conjunto de SQL sem servidor

O conjunto de SQL sem servidor é um serviço de pagamento por consulta que não exige que escolha o tamanho certo. O sistema ajusta-se automaticamente com base nos requisitos, o que o liberta da gestão da infraestrutura e da escolha do tamanho certo para a solução.

Conjunto de SQL dedicado – Unidades de Data Warehouse (DWUs) e Unidades de Data Warehouse de Computação (cDWUs)

Recomendações para escolher o número ideal de unidades do armazém de dados (DWUs) para otimizar o preço e o desempenho e como alterar o número de unidades.

Unidades do Data Warehouse

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

Para um desempenho mais elevado, pode aumentar o número de unidades do armazém de dados. Para obter menos desempenho, reduza as unidades do armazém de dados. Os custos de armazenamento e de computação são faturados em separado, pelo que a alteração das unidades do armazém de dados não afeta os custos de armazenamento.

O desempenho das unidades do armazém de dados baseia-se nestas métricas de carga de trabalho do armazém de dados:

  • A rapidez com que uma consulta de armazenamento de dados padrão pode analisar um grande número de linhas e, em seguida, executar uma agregação complexa. Esta operação é intensiva em termos de E/S e CPU.
  • A rapidez com que o armazém de dados pode ingerir dados dos Blobs de Armazenamento do Azure ou do Azure Data Lake. Esta operação consome muita rede e CPU.
  • A rapidez com que o CREATE TABLE AS SELECT comando T-SQL pode copiar uma tabela. Esta operação envolve ler dados do armazenamento, distribuí-lo pelos nós da aplicação e escrever novamente no armazenamento. Esta operação consome CPU, E/S e utilização intensiva da rede.

Aumentar as DWUs:

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

Objetivo de Nível de Serviço

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

O Objetivo de Nível de Serviço (SLO) é a definição de escalabilidade que determina o custo e o nível de desempenho do armazém de dados. Os níveis de serviço do conjunto de SQL dedicado gen2 são medidos em unidades do armazém de dados (DWU), por exemplo DW2000c.

Nota

O Azure Synapse Analytics Gen2 adicionou recentemente capacidades de dimensionamento adicionais para suportar camadas de computação até 100 cDWU. Os armazéns de dados existentes atualmente no Gen1 que requerem escalões de computação mais baixos podem agora atualizar para o Gen2 nas regiões que estão atualmente disponíveis sem custos adicionais. Se a sua região ainda não for suportada, ainda pode atualizar para uma região suportada. Para obter mais informações, consulte Atualizar para o Gen2.

No T-SQL, a definição SERVICE_OBJECTIVE determina o nível de serviço e o escalão de desempenho do conjunto de SQL dedicado.

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

Escalões de Desempenho e Unidades de Data Warehouse

Cada escalão de desempenho utiliza uma unidade de medida ligeiramente diferente para as unidades do armazém de dados. Esta diferença reflete-se na fatura, uma vez que a unidade de dimensionamento se traduz diretamente na faturação.

  • Os armazéns de dados gen1 são medidos em Unidades de Data Warehouse (DWUs).
  • Os armazéns de dados gen2 são medidos em unidades de Data Warehouse de computação (cDWUs).

Tanto as DWUs como as cDWUs suportam o aumento ou redução vertical da computação e a colocação em pausa da computação quando não precisa de utilizar o armazém de dados. Estas operações são todas a pedido. O Gen2 utiliza uma cache baseada em disco local nos nós de computação para melhorar o desempenho. Quando dimensiona ou coloca o sistema em pausa, a cache é invalidada, pelo que é necessário um período de aquecimento da cache antes de obter um desempenho ideal.

À medida que aumenta as unidades do armazém de dados, está a aumentar linearmente os recursos de computação. O Gen2 fornece o melhor desempenho de consulta e a escala mais elevada. Os sistemas Gen2 também utilizam mais a cache.

Limites de capacidade

Cada SQL Server (por exemplo, myserver.database.windows.net) tem uma quota de Unidade de Transação de Base de Dados (DTU) que permite um número específico de unidades do armazém de dados. Para obter mais informações, veja limites de capacidade de gestão de cargas de trabalho.

Avaliar o número de unidades do armazém de dados de que precisa

O número ideal de unidades do armazém de dados depende muito da carga de trabalho e da quantidade de dados que carregou para o sistema.

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

  1. Comece por selecionar uma DWU mais pequena.
  2. Monitorize o desempenho da aplicação à medida que testa os carregamentos de dados para o sistema, observando o número de DWUs selecionadas em comparação com o desempenho que observa.
  3. Identifique quaisquer requisitos adicionais para períodos periódicos de atividade de pico. As cargas de trabalho que apresentam picos e calhas significativos na atividade podem ter de ser dimensionadas com frequência.

O conjunto de SQL é um sistema de escalamento horizontal que pode aprovisionar grandes quantidades de computação e quantidades consideráveis de dados. Para ver as suas verdadeiras capacidades de dimensionamento, especialmente em DWUs maiores, recomendamos o dimensionamento do conjunto de dados à medida que dimensiona para garantir que tem dados suficientes para alimentar as CPUs. Para testes de dimensionamento, recomendamos que utilize, pelo menos, 1 TB.

Nota

O desempenho das consultas só aumenta com mais paralelização se o trabalho puder ser dividido entre nós de computação. Se descobrir que o dimensionamento não está a alterar o desempenho, poderá ter de ajustar a estrutura da tabela e/ou as consultas. Para obter orientações sobre a otimização de consultas, veja Gerir consultas de utilizador.

Permissões

Alterar as unidades do armazém de dados requer as permissões descritas em ALTER DATABASE.

As funções incorporadas do Azure, como Contribuidor da BD SQL e Contribuidor de SQL Server, podem alterar as definições da DWU.

Ver as definições de DWU atuais

Para ver a definição de DWU atual:

  1. Abra SQL Server Object Explorer no Visual Studio.
  2. Ligue-se à base de dados mestra associada ao SERVIDOR SQL lógico.
  3. Selecione a partir da vista de gestão dinâmica sys.database_service_objectives. Segue-se 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 do armazém de dados

Portal do Azure

Para alterar as DWUs:

  1. Abra o portal do Azure, abra a base de dados e selecione Dimensionar.

  2. Em Dimensionar, mova o controlo de deslize para a esquerda ou para a direita para alterar a definição DWU.

  3. Selecione Guardar. É apresentada uma mensagem de confirmação. Selecione sim para confirmar ou não para cancelar.

PowerShell

Nota

Recomendamos que utilize o módulo Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Para alterar as DWUs, utilize o cmdlet Do PowerShell Set-AzSqlDatabase . O exemplo seguinte define o objetivo de nível de serviço como DW1000 para a base de dados MySQLDW que está alojada no servidor MyServer.

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

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

T-SQL

Com o T-SQL, pode ver as DWUsettings atuais, alterar as definições e verificar o progresso.

Para alterar as DWUs:

  1. Ligue-se à base de dados mestra associada ao servidor.
  2. Utilize a instrução ALTER DATABASE TSQL. O exemplo seguinte define o objetivo de nível de serviço como DW1000c para a base de dados MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

APIs REST

Para alterar as DWUs, utilize a API REST Criar ou Atualizar Base de Dados . O exemplo seguinte define o objetivo de nível de serviço como DW1000c para a base de dados MySQLDW, que está alojada no servidor MyServer. O servidor está num grupo de recursos do Azure com o nome 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, veja APIs REST para Azure Synapse Analytics.

Verificar o estado das alterações da DWU

As alterações à DWU podem demorar vários minutos a concluir. Se estiver a dimensionar automaticamente, considere implementar a lógica para garantir que determinadas operações foram concluídas antes de prosseguir com outra ação.

Verificar o estado da base de dados através de vários pontos finais permite-lhe implementar corretamente a automatização. O portal fornece notificação após a conclusão de uma operação e do estado atual das bases de dados, mas não permite a verificação programática do estado.

Não pode verificar o estado da base de dados para operações de escalamento horizontal com o portal do Azure.

Para verificar o estado das alterações da DWU:

  1. Ligue-se à base de dados mestra associada ao servidor.
  2. Submeta a seguinte consulta para verificar o estado da base de dados.
SELECT    *
FROM      sys.databases
;
  1. Submeta a seguinte consulta para verificar o estado da operação
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

Esta DMV devolve informações sobre várias operações de gestão no conjunto de SQL dedicado, como a operação e o estado da operação, que é IN_PROGRESS ou CONCLUÍDA.

O fluxo de trabalho de dimensionamento

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

  • Para uma operação de aumento vertical, o sistema desanexa todos os nós de computação, aprovisiona os nós de computação adicionais e, em seguida, liga-se novamente à camada de armazenamento.
  • Para uma operação de redução horizontal, o sistema desanexa todos os nós de computação e, em seguida, liga apenas os nós necessários à camada de armazenamento.

Passos seguintes

Para saber mais sobre como gerir o desempenho, veja Classes de recursos para gestão de cargas de trabalhoe Limites de memória e simultaneidade.