Visão geral de pools elásticos de hiperescala no Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

Este artigo fornece uma visão geral dos pools elásticos de hiperescala no Banco de Dados SQL do Azure.

Um pool elástico do Banco de Dados SQL do Azure permite que os desenvolvedores de software como serviço (SaaS) otimizem a relação preço-desempenho para um grupo de bancos de dados dentro de um orçamento prescrito e, ao mesmo tempo, forneçam elasticidade de desempenho para cada banco de dados. Os pools elásticos Hyperscale do Banco de Dados SQL do Azure introduzem um modelo de recurso compartilhado para bancos de dados Hyperscale.

Para obter exemplos para criar, dimensionar ou mover bancos de dados para um pool elástico de hiperescala usando a CLI do Azure ou o PowerShell, consulte Trabalhando com pools elásticos de hiperescala usando ferramentas de linha de comando

Nota

Os pools elásticos para Hyperscale estão atualmente em visualização.

Descrição geral

Implante seu banco de dados Hyperscale em um pool elástico para compartilhar recursos entre bancos de dados dentro do pool e otimize o custo de ter vários bancos de dados com padrões de uso diferentes.

Cenários para usar um pool elástico com seus bancos de dados Hyperscale:

  • Quando você precisa dimensionar os recursos de computação alocados para o pool elástico para cima ou para baixo em um período de tempo previsível, independentemente da quantidade de armazenamento alocado.
  • Quando você quiser expandir os recursos de computação alocados para o pool elástico adicionando uma ou mais réplicas em escala de leitura.
  • Se você quiser usar uma alta taxa de transferência de log de transações para cargas de trabalho de gravação intensiva, mesmo com recursos de computação mais baixos.

Migrar bases de dados não Hyperscale para um conjunto elástico Hyperscale atualiza as bases de dados para o escalão de serviço Hyperscale.

Arquitetura

Tradicionalmente, a arquitetura de um banco de dados Hyperscale autônomo consiste em três componentes principais independentes: Computação, Armazenamento ("Page Servers") e o log ("Log Service"). Quando você cria um pool elástico para seus bancos de dados Hyperscale, os bancos de dados dentro do pool compartilham recursos de computação e log. Além disso, se você optar por configurar a alta disponibilidade, cada pool de alta disponibilidade será criado com um conjunto equivalente e independente de recursos de computação e log.

A seguir descrevemos a arquitetura de um pool elástico para bancos de dados Hyperscale:

  • Um pool elástico de hiperescala consiste em um pool primário que hospeda bancos de dados primários de hiperescala e, se configurado, até quatro pools adicionais de alta disponibilidade.
  • Os bancos de dados primários de hiperescala hospedados no pool elástico primário compartilham o processo de computação do mecanismo de banco de dados (sqlservr.exe (mecanismo de banco de dados) do SQL Server, vCores, memória e cache SSD.
  • A configuração da alta disponibilidade para o pool primário cria pools adicionais de alta disponibilidade que contêm réplicas de banco de dados somente leitura para os bancos de dados no pool primário. Cada pool primário pode ter no máximo quatro pools de réplicas de alta disponibilidade. Cada pool de alta disponibilidade compartilha recursos de computação, cache SSD e memória para todos os bancos de dados secundários somente leitura no pool.
  • Todos os bancos de dados de hiperescala no pool elástico primário compartilham o mesmo serviço de log. Como os bancos de dados nos pools de alta disponibilidade não têm uma carga de trabalho de gravação, eles não utilizam o serviço de log.
  • Cada banco de dados Hyperscale tem seu próprio conjunto de servidores de página, e esses servidores de página são compartilhados entre o banco de dados primário no pool primário e todos os bancos de dados de réplica secundários no pool de alta disponibilidade.
  • Os bancos de dados secundários de hiperescala replicados geograficamente podem ser colocados dentro de outro pool elástico.
  • A especificação ApplicationIntent=ReadOnly na cadeia de conexão do banco de dados roteia você para um banco de dados de réplica somente leitura em um dos pools de alta disponibilidade.

O diagrama a seguir mostra a arquitetura de um pool elástico para bancos de dados Hyperscale:

Diagram showing the Hyperscale elastic pool architecture.

Gerenciar bancos de dados de pool elástico Hyperscale

Você pode usar os mesmos comandos para gerenciar seus bancos de dados Hyperscale em pool como bancos de dados em pool nas outras camadas de serviço. Apenas certifique-se de especificar Hyperscale para a edição ao criar seu pool elástico Hyperscale.

A única diferença é a capacidade de modificar o número de réplicas de alta disponibilidade (H/A) para um pool elástico Hyperscale existente. Para tal:

Você pode usar as seguintes ferramentas de cliente para gerenciar seus bancos de dados Hyperscale em um pool elástico:

Migrar bancos de dados não Hyperscale para pools elásticos Hyperscale

Ao migrar um banco de dados para o Hyperscale, você pode adicioná-lo a um pool elástico Hyperscale existente. Para essas migrações, o pool elástico Hyperscale precisa existir no mesmo servidor lógico que o banco de dados de origem.

Ao migrar bancos de dados para pools elásticos Hyperscale, esteja ciente do número máximo de bancos de dados por pool elástico Hyperscale.

Migrar bancos de dados não Hyperscale para pools elásticos Hyperscale usando T-SQL

Você pode usar comandos T-SQL para migrar vários bancos de dados de uso geral e adicioná-los a um pool elástico de hiperescala existente chamado hsep1:

ALTER DATABASE gpepdb1 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb2 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb3 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))
ALTER DATABASE gpepdb4 MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL(NAME = [hsep1]))

Neste exemplo, você está solicitando implicitamente uma migração de Propósito Geral para Hiperescala, especificando que o destino SERVICE_OBJECTIVE é um pool elástico de Hiperescala. Cada um dos comandos acima começa a migrar o respetivo banco de dados de uso geral para o Hyperscale. Esses ALTER DATABASE comandos retornam rapidamente e não esperam que a migração seja concluída. No exemplo mostrado, você teria quatro migrações desse tipo de Propósito Geral para Hiperescala sendo executadas em paralelo.

Você pode consultar a exibição de gerenciamento dinâmico sys.dm_operation_status para monitorar o status dessas operações de migração em segundo plano.

Migrar bancos de dados não Hyperscale para pools elásticos Hyperscale usando o PowerShell

Você pode usar comandos do PowerShell para migrar vários bancos de dados de uso geral e adicioná-los a um pool elástico de hiperescala existente chamado hsep1. Por exemplo, o seguinte script de exemplo executa estas etapas:

  1. Use o cmdlet Get-AzSqlElasticPoolDatabase para listar todos os bancos de dados no pool elástico de uso geral chamado gpep1.
  2. O Where-Object cmdlet filtra a lista apenas para os nomes de banco de dados que começam com gpepdb.
  3. Para cada banco de dados, o cmdlet Set-AzSqlDatabase inicia uma migração. Nesse caso, você está solicitando implicitamente uma migração para a camada de serviço Hyperscale especificando o pool elástico Hyperscale de destino chamado hsep1.
    • O -AsJob parâmetro permite que cada uma das Set-AzSqlDatabase solicitações seja executada em paralelo. Se preferir executar as migrações uma a uma, você pode remover o -AsJob parâmetro.
$dbs = Get-AzSqlElasticPoolDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -ElasticPoolName "gpep1"
$dbs | Where-Object { $_.DatabaseName -like "gpepdb*" } | % { Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -ServerName "mylogicalserver" -DatabaseName ($_.DatabaseName) -ElasticPoolName "hsep1" -AsJob }

Além da exibição de gerenciamento dinâmico sys.dm_operation_status , você pode usar o cmdlet do PowerShell Get-AzSqlDatabaseActivity para monitorar o status dessas operações de migração em segundo plano.

Limites de recursos

A seguir estão listados os limites suportados para trabalhar com bancos de dados Hyperscale em pools elásticos:

  • Geração de hardware suportada: Memória de série padrão (Gen5), série premium e série premium otimizada.
  • vCore máximo por pool: 80 ou 128 vCores, dependendo do objetivo do nível de serviço.
  • Tamanho máximo de dados suportado por base de dados: 100 TB.
  • Tamanho total máximo de dados suportado em DBs no pool: 100 TB.
  • Taxa de transferência máxima do log de transações suportada por banco de dados: 100 MB.
  • Taxa de transferência total de log de transações máxima suportada em bancos de dados no pool: 131,25 MB/segundo.
  • Cada pool elástico de hiperescala pode ter até 25 bancos de dados.

Para obter mais detalhes, consulte os limites de recursos dos pools elásticos Hyperscale para otimização de memória das séries padrão, premium e premium.

Nota

Os perfis de desempenho, os recursos suportados e os limites publicados estão sujeitos a alterações enquanto o recurso está em visualização. Como tal, é melhor validar seu caso de uso com testes funcionais regulares, de desempenho e de escala de cargas de trabalho.

Limitações

Considere as seguintes limitações:

  • Não há suporte para alterar um pool elástico não Hyperscale existente para a edição Hyperscale. A seção de migração fornece algumas alternativas que você pode usar.
  • Não há suporte para alterar a edição de um pool elástico Hyperscale para uma edição que não seja Hyperscale.
  • Para reverter a migração de um banco de dados qualificado, que está em um pool elástico de hiperescala, ele deve primeiro ser removido do pool elástico de hiperescala. O banco de dados Hyperscale autônomo pode ser migrado reversamente para um banco de dados autônomo de uso geral.
  • A manutenção de bancos de dados em um pool é executada e as janelas de manutenção são configuradas, no nível do pool. Atualmente, não é possível configurar uma janela de manutenção para pools elásticos Hyperscale.
  • A redundância de zona não está disponível atualmente para pools elásticos de hiperescala. A tentativa de adicionar um banco de dados Hyperscale com redundância de zona a um pool elástico Hyperscale resulta em um erro.
  • Não há suporte para a adição de uma réplica nomeada em um pool elástico Hyperscale. A tentativa de adicionar uma réplica nomeada de um banco de dados Hyperscale a um pool elástico Hyperscale resulta em um UnsupportedReplicationOperation erro. Em vez disso, crie a réplica nomeada como um único banco de dados Hyperscale.

Problemas conhecidos

Problema Recomendação
Se você tentar criar um novo pool elástico de hiperescala do PowerShell com o parâmetro especificado, obterá um vago -ZoneRedundantOne or more errors occurred. Se você executar o comando PowerShell com os respetivos -Verbose parâmetros especificados -Debug , obterá o erro real: Provisioning of zone redundant database/pool is not supported for your current request. No momento, não há suporte para a criação de pools elásticos de hiperescala com redundância de zona especificada.
Em casos raros, você pode obter o erro 45122 - This Hyperscale database cannot be added into an elastic pool at this time. In case of any questions, please contact Microsoft support, ao tentar mover / restaurar / copiar um banco de dados Hyperscale em um pool elástico. Esta limitação deve-se a detalhes específicos da implementação. Se este erro estiver a bloqueá-lo, levante um incidente de suporte e solicite ajuda.