Unidades de Data Warehouse (DWUs) para pool SQL dedicado (anteriormente SQL DW) no Azure Synapse Analytics

Este documento contém recomendações sobre como escolher o número ideal de unidades de armazém de dados (DWUs) para pool SQL dedicado (anteriormente SQL DW) para otimizar o preço e o desempenho, e como alterar o número de unidades.

O que são Unidades de Data Warehouse

Um pool SQL dedicado (anteriormente SQL DW) representa uma coleção de recursos analíticos que estão sendo provisionados. 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 Unidades de Data Warehouse (DWUs). Uma DWU é uma medida abstrata e normalizada do desempenho e recursos de computação.

Uma alteração no nível de serviço altera o número de DWUs disponíveis para o sistema, o que, por sua vez, ajusta o desempenho e o custo do sistema.

Para um desempenho superior, pode aumentar o número de unidades de armazém de dados. Para obter menos desempenho, reduza as unidades de 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 de armazém de dados baseia-se nestas métricas de carga de trabalho de armazém de dados:

  • Quão rápido uma consulta de pool SQL dedicado padrão (anteriormente SQL DW) pode verificar um grande número de linhas e, em seguida, executar uma agregação complexa. Esta operação é intensiva em E/S e CPU.
  • Quão rápido o pool SQL dedicado (anteriormente SQL DW) pode ingerir dados de Blobs de Armazenamento do Azure ou do Azure Data Lake. Esta operação é intensiva em rede e CPU.
  • Quão rápido 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. Esta operação é intensiva em CPU, E/S e rede.

Aumento das DWUs:

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

Objetivo de Nível de Serviço

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

Nota

O pool SQL dedicado (anteriormente SQL DW) Gen2 adicionou recentemente recursos de escala adicionais para oferecer suporte a camadas de computação tão baixas quanto DW100c. Os armazéns de dados existentes atualmente no Gen1 que exigem os níveis de computação mais baixos agora podem atualizar para o Gen2 nas regiões que estão atualmente disponíveis sem custo adicional. Se a sua região ainda não tiver suporte, você ainda poderá atualizar para uma região compatível. Para obter mais informações, consulte Atualizar para Gen2.

No T-SQL, a configuração SERVICE_OBJETIVE determina o nível de serviço e a camada de desempenho para seu pool SQL dedicado (anteriormente SQL DW).

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. Esta diferença reflete-se na fatura, uma vez que a unidade de escala se traduz diretamente na faturação.

  • Os armazéns de dados Gen1 são medidos em unidades de armazém de dados (DWUs).
  • Os armazéns de dados Gen2 são medidos em unidades de data warehouse de computação (cDWUs).

Tanto DWUs quanto cDWUs suportam dimensionamento de computação para cima ou para baixo e pausa de 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, é necessário um período de aquecimento do cache antes que o desempenho ideal seja alcançado.

Limites de capacidade

Cada servidor SQL (por exemplo, myserver.database.windows.net) tem uma cota de Unidade de Transação de Banco de Dados (DTU) 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.

De quantas unidades de armazém de dados necessito

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

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

  1. Comece selecionando um DWU menor.

  2. Monitore o desempenho do seu aplicativo à medida que você testa as cargas de dados no sistema, observando o número de DWUs selecionadas em comparação com o desempenho observado. Verifique monitorando a utilização de recursos.

  3. Identificar quaisquer requisitos adicionais para períodos periódicos de pico de atividade. As cargas de trabalho que mostram picos e mínimos significativos na atividade podem precisar ser dimensionadas com frequência.

O pool SQL dedicado (anteriormente SQL DW) é 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 em escala, recomendamos o uso de pelo menos 1 TB.

Nota

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 as consultas. Para obter diretrizes de ajuste de consulta, consulte Gerenciar consultas de usuários.

Permissões

A alteração das unidades de armazém de dados requer as permissões descritas em ALTER DATABASE.

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

Ver as definições DWU atuais

Para exibir a configuração DWU atual:

  1. Abra o Pesquisador de Objetos do SQL Server no Visual Studio.
  2. Conecte-se ao banco de dados mestre associado ao servidor SQL lógico.
  3. Selecione a partir da vista de gestão dinâmica sys.database_service_objetives. 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 de armazém de dados

Portal do Azure

Para alterar DWUs:

  1. Abra o portal do Azure, abra seu banco de dados e clique em Dimensionar.

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

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

PowerShell

Nota

Recomendamos que utilize o módulo do 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, use o cmdlet Set-AzSqlDatabase 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 pool SQL dedicado (anteriormente SQL DW)

T-SQL

Com o T-SQL, você pode visualizar as configurações DWU atuais, 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')
;

APIs REST

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": "DW1000c"
    }
}

Para obter mais exemplos de API REST, consulte APIs REST para pool SQL dedicado (anteriormente SQL DW).

Verificar o estado das alterações DWU

As alterações 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 pontos de extremidade permite implementar 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.

Não é possível 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 seguinte consulta para verificar o estado do banco de dados.

    SELECT    *
    FROM      sys.dm_operation_status
    WHERE     resource_type_desc = 'Database'
    AND       major_resource_id = 'MySQLDW'
    ;
    

Esse DMV retorna informações sobre várias operações de gerenciamento em seu pool SQL dedicado (anteriormente SQL DW), como a operação e o estado da operação, que é IN_PROGRESS ou CONCLUÍDA.

O fluxo de trabalho de dimensionamento

Quando você inicia uma operação de escala, o sistema primeiro mata 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-se à camada de armazenamento.
  • Para uma operação de redução de escala, o sistema desanexa todos os nós de computação e, em seguida, reconecta apenas os nós necessários à camada de armazenamento.

Próximos passos

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.