Gerenciar computação no SQL Data Warehouse do AzureManage compute in Azure SQL Data Warehouse

Saiba mais sobre como gerenciar recursos de computação no SQL Data Warehouse do Azure.Learn about managing compute resources in Azure SQL Data Warehouse. Reduzir os custos pausando o data warehouse, ou dimensionar o data warehouse para atender às demandas de desempenho.Lower costs by pausing the data warehouse, or scale the data warehouse to meet performance demands.

O que é o gerenciamento de computação?What is compute management?

A arquitetura do SQL Data Warehouse separa armazenamento e computação, permitindo que cada um seja dimensionado independentemente.The architecture of SQL Data Warehouse separates storage and compute, allowing each to scale independently. Como resultado, é possível dimensionar o cálculo para atender às demandas de desempenho independentes do armazenamento de dados.As a result, you can scale compute to meet performance demands independent of data storage. Além disso, você também pode pausar e retomar os recursos de computação.You can also pause and resume compute resources. Uma consequência natural dessa arquitetura é que a cobrança pela computação e pelo armazenamento é separada.A natural consequence of this architecture is that billing for compute and storage is separate. Se não for necessário usar o data warehouse por um tempo, você poderá economizar os custos de computação, pausando a computação.If you don't need to use your data warehouse for a while, you can save compute costs by pausing compute.

Dimensionar computaçãoScaling compute

É possível escalar horizontalmente ou voltar a escala de computação, ajustando a configuração unidades de data warehouse para seu data warehouse.You can scale out or scale back compute by adjusting the data warehouse units setting for your data warehouse. O desempenho de consultas e carregamento pode aumentar linearmente na medida em que você adicionar mais unidades de data warehouse.Loading and query performance can increase linearly as you add more data warehouse units.

Para etapas de escala horizontal, consulte os inícios rápidos do Portal do Azure, PowerShell ou T-SQL.For scale-out steps, see the Azure portal, PowerShell, or T-SQL quickstarts. Também é possível executar operações de escala horizontal com uma API REST.You can also perform scale-out operations with a REST API.

Para executar uma operação de escala, o SQL Data Warehouse primeiro encerra todas as consultas de entrada e, em seguida, reverte as transações para garantir um estado consistente.To perform a scale operation, SQL Data Warehouse first kills all incoming queries and then rolls back transactions to ensure a consistent state. A escala ocorrerá somente depois que a reversão de transação estiver completa.Scaling only occurs once the transaction rollback is complete. Para uma operação de escala, o sistema desanexa a camada de armazenamento dos nós de Computação, adiciona nós de Computação e, em seguida, reanexa a camada de armazenamento na camada de Computação.For a scale operation, the system detaches the storage layer from the Compute nodes, adds Compute nodes, and then reattaches the storage layer to the Compute layer. Cada data warehouse é armazenado como 60 distribuições que são distribuídas uniformemente para os nós de Computação.Each data warehouse is stored as 60 distributions, which are evenly distributed to the Compute nodes. Adicionar mais nós de Computação, adiciona mais potência de computação.Adding more Compute nodes adds more compute power. À medida que o número de nós de Computação aumenta, o número de distribuições por nó de computação diminui, proporcionando mais potência de computação para suas consultas.As the number of Compute nodes increases, the number of distributions per compute node decreases, providing more compute power for your queries. Da mesma forma, diminuindo as unidades de data warehouse reduzirá o número de nós de Computação, o que reduz os recursos de computação para consultas.Likewise, decreasing data warehouse units reduces the number of Compute nodes, which reduces the compute resources for queries.

A tabela a seguir mostra como o número de distribuições por nó de Computação altera na medida em que as unidades do data warehouse mudam.The following table shows how the number of distributions per Compute node changes as the data warehouse units change. O DWU6000 fornece 60 nós de Computação e alcança um desempenho de consultas muito maior que o DWU100.DWU6000 provides 60 Compute nodes and achieves much higher query performance than DWU100.

Unidades de data warehouseData warehouse units # de nós de Computação# of Compute nodes # de distribuições por nó# of distributions per node
DW100cDW100c 11 6060
DW200cDW200c 11 6060
DW300cDW300c 11 6060
DW400cDW400c 11 6060
DW500cDW500c 11 6060
DW1000cDW1000c 22 3030
DW1500cDW1500c 33 2020
DW2000cDW2000c 44 1515
DW2500cDW2500c 55 1212
DW3000cDW3000c 66 1010
DW5000cDW5000c 1010 66
DW6000cDW6000c 1212 55
DW7500cDW7500c 1515 44
DW10000cDW10000c 2020 33
DW15000cDW15000c 3030 22
DW30000cDW30000c 6060 11

Localizar o tamanho correto das unidades de data warehouseFinding the right size of data warehouse units

Para ver os benefícios de desempenho de escalamento horizontal, especialmente para unidades de data warehouse grandes, convém usar pelo menos um conjunto de dados de 1 TB.To see the performance benefits of scaling out, especially for larger data warehouse units, you want to use at least a 1-TB data set. Para localizar o melhor número de unidades de data warehouse para seu data warehouse, tente escalar e reduzir verticalmente.To find the best number of data warehouse units for your data warehouse, try scaling up and down. Execute algumas consultas com diferentes números de unidades de data warehouse após o carregamento dos dados.Run a few queries with different numbers of data warehouse units after loading your data. Como o dimensionamento é rápido, você pode experimentar vários níveis de desempenho diferentes durante uma hora ou menos.Since scaling is quick, you can try various performance levels in an hour or less.

Recomendações para localizar o melhor número de unidades de data warehouse:Recommendations for finding the best number of data warehouse units:

  • Para um data warehouse em desenvolvimento, comece selecionando um número menor de unidades de data warehouse.For a data warehouse in development, begin by selecting a smaller number of data warehouse units. Um bom ponto de partida é DW400 ou DW200.A good starting point is DW400 or DW200.
  • Monitore o desempenho do aplicativo, observando o número de unidades de data warehouse selecionadas em comparação com o desempenho observado.Monitor your application performance, observing the number of data warehouse units selected compared to the performance you observe.
  • Suponha uma escala linear e determine quanto é necessário para aumentar ou diminuir as unidades do data warehouse.Assume a linear scale, and determine how much you need to increase or decrease the data warehouse units.
  • Continue fazendo ajustes até alcançar um nível de desempenho ideal para seus requisitos de negócios.Continue making adjustments until you reach an optimum performance level for your business requirements.

Quando escalar horizontalmenteWhen to scale out

Escalar dimensionalmente unidades de data warehouse afeta os seguintes aspectos do desempenho:Scaling out data warehouse units impacts these aspects of performance:

  • Melhora o desempenho linear do sistema para exames, agregações e instruções de CTAS.Linearly improves performance of the system for scans, aggregations, and CTAS statements.
  • Aumenta o número de leitores e gravadores para carregamento de dados.Increases the number of readers and writers for loading data.
  • Número máximo de consultas simultâneas e slots de simultaneidade.Maximum number of concurrent queries and concurrency slots.

Recomendações para quando escalar horizontalmente unidades de data warehouse:Recommendations for when to scale out data warehouse units:

  • Antes de executar uma operação de transformação ou carregamento de dados pesados, escale horizontalmente para tornar os dados disponíveis mais rapidamente.Before you perform a heavy data loading or transformation operation, scale out to make the data available more quickly.
  • Durante o horário comercial de pico, escale dimensionalmente para acomodar um número de consultas simultâneas maior.During peak business hours, scale out to accommodate larger numbers of concurrent queries.

E se escalar verticalmente não melhorar o desempenho?What if scaling out does not improve performance?

Adicionar unidades de data warehouse aumentando o paralelismo.Adding data warehouse units increasing the parallelism. Se o trabalho for dividido uniformemente entre os nós de Computação, o paralelismo adicional irá melhorar o desempenho de consultas.If the work is evenly split between the Compute nodes, the additional parallelism improves query performance. Se ao escalar verticalmente o desempenho não melhorar, há alguns motivos pelos quais isso pode acontecer.If scaling out is not changing your performance, there are some reasons why this might happen. Os dados podem estar distorcidos nas distribuições ou as consultas podem estar introduzindo uma grande quantidade de movimentação de dados.Your data might be skewed across the distributions, or queries might be introducing a large amount of data movement. Para investigar os problemas de desempenho de consultas, consulte Solução de problemas de desempenho.To investigate query performance issues, see Performance troubleshooting.

Pausa e retomada de computaçãoPausing and resuming compute

Pausar a computação faz a camada de armazenamento desanexar dos nós de Computação.Pausing compute causes the storage layer to detach from the Compute nodes. Os recursos de Computação são liberados da sua conta.The Compute resources are released from your account. Você não será cobrado pela computação enquanto a computação estiver em pausa.You are not charged for compute while compute is paused. Retomar a computação reanexa o armazenamento nos nós de Computação e retoma as cobranças de Computação.Resuming compute reattaches storage to the Compute nodes, and resumes charges for Compute. Ao pausar um data warehouse:When you pause a data warehouse:

  • Recursos de computação e memória são retornados ao pool de recursos disponíveis no data centerCompute and memory resources are returned to the pool of available resources in the data center
  • Os custos da unidade de data warehouse serão nulos durante a pausa.Data warehouse unit costs are zero for the duration of the pause.
  • O armazenamento de dados não é afetado e seus dados permanecem intactos.Data storage is not affected and your data stays intact.
  • O SQL Data Warehouse cancela todas as operações em execução ou em fila.SQL Data Warehouse cancels all running or queued operations.

Ao retomar um data warehouse:When you resume a data warehouse:

  • O SQL Data Warehouse adquire recursos de memória e computação para configuração das unidades de data warehouse.SQL Data Warehouse acquires compute and memory resources for your data warehouse units setting.
  • Os encargos de computação para as unidades de data warehouse são retomados.Compute charges for your data warehouse units resume.
  • Os dados tornam-se disponíveis.Your data becomes available.
  • Depois que o data warehouse estiver online, você deverá reiniciar as consultas de carga de trabalho.After the data warehouse is online, you need to restart your workload queries.

Se você quiser que o data warehouse esteja sempre acessível, convém dimensioná-lo para o menor tamanho em vez de pausar.If you always want your data warehouse accessible, consider scaling it down to the smallest size rather than pausing.

Para etapas de pausa e retomada, consulte os inícios rápidos do Portal do Azure ou PowerShell.For pause and resume steps, see the Azure portal, or PowerShell quickstarts. Também é possível usar a API REST de pausa ou a API REST de retomada.You can also use the pause REST API or the resume REST API.

Esvaziar as transações antes de pausar ou dimensionarDrain transactions before pausing or scaling

É recomendável que as transações existentes sejam concluídas antes de iniciar uma operação de pausa ou de escala.We recommend allowing existing transactions to finish before you initiate a pause or scale operation.

Ao pausar ou dimensionar o SQL Data Warehouse, nos bastidores, suas consultas são canceladas quando você inicia a pausa ou dimensionar a solicitação.When you pause or scale your SQL Data Warehouse, behind the scenes your queries are canceled when you initiate the pause or scale request. Cancelar uma simples consulta SELECT é uma operação rápida e quase não terá impacto sobre o tempo que leva para pausar ou dimensionar sua instância.Canceling a simple SELECT query is a quick operation and has almost no impact to the time it takes to pause or scale your instance. No entanto, as consultas transacionais, que modificam os dados ou a estrutura dos dados, não conseguirão parar rapidamente.However, transactional queries, which modify your data or the structure of the data, may not be able to stop quickly. As consultas transacionais, por definição, devem ser concluídas na íntegra ou reverter suas alterações.Transactional queries, by definition, must either complete in their entirety or rollback their changes. Reverter o trabalho concluído por uma consulta transacional pode levar tanto tempo, ou até mais, quanto a alteração original que a consulta estava aplicando.Rolling back the work completed by a transactional query can take as long, or even longer, than the original change the query was applying. Por exemplo, se você cancelar uma consulta que estava excluindo linhas que já estava em execução por uma hora, poderá levar uma hora para o sistema inserir de volta as linhas que foram excluídas.For example, if you cancel a query which was deleting rows and has already been running for an hour, it could take the system an hour to insert back the rows which were deleted. Se você executar a pausa ou o dimensionamento enquanto as transações estiverem em andamento, a pausa ou o dimensionamento poderão demorar muito tempo porque eles têm que esperar a reversão ser concluída antes de prosseguir.If you run pause or scaling while transactions are in flight, your pause or scaling may seem to take a long time because pausing and scaling has to wait for the rollback to complete before it can proceed.

Consulte também Noções básicas sobre transações e Otimizar transações.See also Understanding transactions, and Optimizing transactions.

Automatizar o gerenciamento de computaçãoAutomating compute management

Para automatizar as operações de gerenciamento de computação, consulte Gerenciar computação com o Azure Functions.To automate the compute management operations, see Manage compute with Azure functions.

Cada operação de escala horizontal, pausa e retomada pode demorar vários minutos para ser concluída.Each of the scale-out, pause, and resume operations can take several minutes to complete. Se você está escalando, pausando ou retomando automaticamente, é recomendável implementar a lógica para assegurar que determinadas operações tenham sido concluídas antes de prosseguir com outra ação.If you are scaling, pausing, or resuming automatically, we recommend implementing logic to ensure that certain operations have completed before proceeding with another action. Verificar o estado do data warehouse através de vários pontos de extremidades permite que você implemente corretamente a automação dessas operações.Checking the data warehouse state through various endpoints allows you to correctly implement automation of such operations.

Para verificar o estado do data warehouse, consulte o início rápido do PowerShell ou T-SQL.To check the data warehouse state, see the PowerShell or T-SQL quickstart. Você também pode verificar o estado do data warehouse com uma API REST.You can also check the data warehouse state with a REST API.

permissõesPermissions

Escalar o data warehouse exige as permissões descritas em ALTER DATABASE.Scaling the data warehouse requires the permissions described in ALTER DATABASE. Pausar e Retomar exige a permissão Contribuidor do DB SQL, especificamente Microsoft.Sql/servers/databases/action.Pause and Resume require the SQL DB Contributor permission, specifically Microsoft.Sql/servers/databases/action.

Próximas etapasNext steps

Consulte o guia de instruções para gerenciar computação outro aspecto do gerenciamento de recursos de computação que está alocando diferentes recursos de computação para consultas individuais.See the how to guide for manage compute Another aspect of managing compute resources is allocating different compute resources for individual queries. Para obter mais informações, consulte Classes de recurso para gerenciamento de carga de trabalho.For more information, see Resource classes for workload management.