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

Este documento contém recomendações sobre como escolher o número ideal de DWUs (Unidades de Data Warehouse) para o pool de SQL dedicado (conhecido anteriormente como SQL DW) a fim de otimizar o preço e o desempenho, além de como alterar o número de unidades.

O que são Unidades de Data Warehouse

O pool de SQL dedicado (antigo SQL DW) representa uma coleção de recursos de análise 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 DWUs (Unidades de Data Warehouse). Uma DWU representa uma medida abstrata normalizada de recursos de computação e desempenho.

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

Para obter um melhor desempenho, você pode aumentar o número de Unidades de Data Warehouse. Para obter um desempenho menor, reduza as Unidades de Data Warehouse. Os custos de armazenamento e computação são cobrados separadamente, para que as mudanças de unidades de data warehouse não afetem os custos de armazenamento.

O desempenho de unidades de data warehouse baseia-se nestas métricas de carga de trabalho do data warehouse:

  • A velocidade com a qual um pool de SQL dedicado padrão (anteriormente denominado SQL DW) verifica um grande número de linhas e executa uma agregação complexa. Essa operação tem uso intensivo de E/S e CPU.
  • Quão rápido o pool de SQL dedicado (anteriormente denominado SQL DW) pode ingerir dados de Blobs de Armazenamento do Azure ou Azure Data Lake. Essa operação tem uso intensivo de rede e CPU.
  • A velocidade com a qual o comando T-SQL CREATE TABLE AS SELECT pode copiar uma tabela. Essa operação envolve a leitura de dados do armazenamento, distribuindo-os em todos os nós do dispositivo e gravando novamente no armazenamento. Essa operação é de uso intensivo de CPU, rede e E/S.

Aumento de DWUs:

  • Altera de maneira linear o desempenho do sistema para verificações, agregações e instruções de 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 Objetivo de nível de serviço (SLO) é a configuração de escalabilidade que determina o nível de custo e nível de desempenho do pool de SQL dedicado (anteriormente denominado SQL DW). Os níveis de serviço para o pool de SQL dedicado (anteriormente denominado SQL DW) Gen2 são medidos em DWU (Unidades de Data Warehouse), por exemplo, DW2000c.

Observação

Recentemente, o pool de SQL dedicado (conhecido anteriormente como SQL DW) Gen2 adicionou novas funcionalidades de dimensionamento para dar suporte a camadas de computação extremamente baixas, como DW100c. Os data warehouses existentes em Gen1 que exigem níveis de computação menores agora fazer upgrade para Gen2 nas regiões que estejam disponíveis no momento sem nenhum custo adicional. Se ainda não houver suporte para a sua região, você poderá atualizar para uma região com suporte. Para saber mais, confira Atualizar para Gen2.

No T-SQL, a configuração SERVICE_OBJECTIVE determina o nível de serviço e o nível de desempenho do pool de SQL dedicado (anteriormente denominado SQL DW).

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

Níveis de desempenho e unidades de data warehouse

Cada nível de desempenho usa uma unidade de medida ligeiramente diferente para suas unidades de data warehouse. Essa diferença é refletida na fatura à medida que a unidade de escala é convertida diretamente para cobrança.

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

DWUs e cDWUs oferecem suporte ao dimensionamento vertical ou horizontal de computação e à pausa da computação quando você não precisar usar o data warehouse. Todas essas operações são sob demanda. O Gen2 usa um cache local baseado em disco em 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 de cache antes que o desempenho ideal seja obtido.

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 depósito de dados. Para mais informações, consulte o limites de capacidade de gerenciamento de carga de trabalho.

De quantas Unidades de Data Warehouse precisarei?

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

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

  1. Comece selecionando um DWU menor.

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

  3. Identifique quaisquer requisitos adicionais para períodos de atividade de pico temporários. As cargas de trabalho que mostram picos significativos e ciclos na atividade podem precisar ser escaladas com frequência.

Opool de SQL dedicado (anteriormente denominado SQL DW) é um sistema de expansão que pode provisionar várias quantidades de dados dimensionáveis de computação e consulta.

Para ver seus verdadeiros recursos para dimensionamento, especialmente em DWUs maiores, é recomendável dimensionar o conjunto de dados ao dimensionar para garantir que você tenha dados suficientes para alimentar as CPUs. Para testar o dimensionamento, é recomendável usar pelo menos 1 TB.

Observação

O desempenho de consulta só aumentará 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 o desempenho, será necessário ajustar o design da tabela e/ou de suas consultas. Para obter diretrizes de ajuste de consulta, consulte Gerenciar consultas de usuário.

Permissões

Alterar as unidades de data warehouse exige as permissões descritas em ALTERAR BANCO DE DADOS.

Funções internas do Azure, como Colaborador do BD SQL e Colaborador do SQL Server, podem alterar as configurações da DWU.

Exibir configurações atuais de DWU

Para exibir a configuração atual de DWU:

  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 do modo de exibição de gerenciamento dinâmico sys.database_service_objectives. Veja 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 data warehouse

Portal do Azure

Para alterar DWUs:

  1. Abra o Portal do Azure, abra seu banco de dados e clique em Escala.

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

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

PowerShell

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, confira 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 do PowerShell Set-AzSqlDatabase. O exemplo a seguir define o objetivo de nível de serviço como DW1000 para o banco de dados MySQLDW, que está hospedado no servidor MyServer.

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

Para obter mais informações, consulte cmdlets do PowerShell para pool de SQL dedicado (anteriormente denominado SQL DW)

T-SQL

Com o T-SQL, você pode ver 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 servidor.
  2. Use a instrução TSQL ALTER DATABASE. 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 o pool de SQL dedicado (anteriormente denominado SQL DW).

Verificar o status das alterações de DWU

As alterações de DWU podem levar vários minutos para concluir. Se você estiver dimensionando automaticamente, considere implementar a lógica para assegurar 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 permitirá que você implemente corretamente a automação. O portal fornece uma notificação após a conclusão de uma operação e o estado atual do bancos de dados, mas não permite a verificação de estado programática.

Não é possível verificar o estado do banco de dados para operações de dimensionamento horizontal com o portal do Azure.

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

  1. Conecte-se ao banco de dados mestre associado ao 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'
    ;
    

Esta DMV retorna informações sobre várias operações de gerenciamento no pool de SQL dedicado (anteriormente denominado SQL DW), como a operação e o estado da operação, que será IN_PROGRESS ou COMPLETED.

O fluxo de trabalho do dimensionamento

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

  • Para uma operação de escala vertical, o sistema desanexa todos os nós de computação, provisiona os nós de computação adicional e anexa-os novamente à camada de armazenamento.
  • Para uma operação de redução vertical, o sistema desanexa todos os nós de computação e anexa apenas os nós necessários à camada de armazenamento.

Próximas etapas

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