Pools elásticos ajudam a gerenciar e dimensionar vários bancos de dados no Banco de Dados SQL do Azure

Aplica-se a: Banco de Dados SQL do Azure

Os pools elásticos do Banco de Dados SQL do Azure são uma solução simples e econômica para gerenciar e dimensionar vários bancos de dados com demandas de uso variadas e imprevisíveis. Os bancos de dados em um pool elástico estão em um único servidor e compartilham um número definido de recursos por um preço definido. Os pools elásticos no Banco de Dados SQL permitem que os desenvolvedores de SaaS (software como serviço) otimizem o desempenho de preço para um grupo de bancos de dados dentro de um orçamento prescrito, ao mesmo tempo em que fornecem elasticidade de desempenho para cada banco de dados.

O que são pools elásticos do SQL?

Os desenvolvedores de SaaS criam aplicativos sobre camadas de dados em grande escala com vários bancos de dados. Um padrão de aplicativo típico é provisionar um único banco de dados para cada cliente. No entanto, clientes diferentes geralmente têm padrões de uso variados e imprevisíveis, e é difícil prever os requisitos de recursos de cada usuário do banco de dados. Tradicionalmente, você tinha duas opções:

  • Provisionamento excessivo de recursos com base no pico de uso e pagamento em excesso.
  • Provisionamento insuficiente para economizar custos, em detrimento do desempenho e da satisfação do cliente durante os picos.

Os pools elásticos resolvem esse problema garantindo que os bancos de dados obtenham os recursos de desempenho de que precisam, quando necessitam deles. Eles fornecem um mecanismo de alocação de recursos simples dentro de um orçamento previsível. Para saber mais sobre os padrões de design para aplicativos SaaS usando pools elásticos, consulte Padrões de design para aplicativos de SaaS multilocatários com o Banco de Dados SQL.

Importante

Não há cobrança por banco de dados para pools elásticos. Você é cobrado por cada hora em que um pool existe no eDTU ou vCores mais alto, independentemente do uso ou se o pool esteve ativo por menos de uma hora.

Os pools elásticos permitem que você compre recursos para um pool compartilhado por vários bancos de dados para acomodar períodos imprevisíveis de uso por bancos de dados individuais. Você pode configurar recursos para o pool com base no Modelo de compra baseado em DTU ou o Modelo de compra baseado em vCore. A utilização agregada de seus bancos de dados determina o requisito de recursos para um pool.

A quantidade de recursos disponíveis para o pool é controlada pelo seu orçamento. Tudo o que você precisa fazer é:

  • Adicione bancos de dados ao pool.
  • Como opção, defina os recursos mínimo e máximo para os bancos de dados, no modelo de compra DTU ou vCore.
  • Defina os recursos do pool com base no seu orçamento.

Você pode usar pools para expandir seu serviço de uma startup enxuta para um negócio desenvolvido em escala cada vez maior.

Dentro do pool, os bancos de dados individuais recebem a flexibilidade de usar recursos dentro dos parâmetros definidos. Sob carga pesada, um banco de dados pode consumir mais recursos para atender à demanda. Bancos de dados sob cargas leves consomem menos e bancos de dados sem carga não consomem recursos. O provisionamento de recursos para o pool inteiro em vez do bancos de dados único simplifica as tarefas de gerenciamento. Além disso, há um orçamento previsível para o pool.

Mais recursos podem ser adicionados a um pool existente com tempo de inatividade mínimo. Se os recursos adicionais não forem mais necessários, eles poderão ser removidos de um pool existente a qualquer momento. Você também pode adicionar ou remover bancos de dados do pool. Se um banco de dados estiver previsivelmente subutilizando recursos, você poderá movê-lo.

Observação

Quando você move bancos de dados para dentro ou fora de um pool elástico, não há tempo de inatividade, exceto por um breve período (questão de segundos) quando as conexões de banco de dados são descartadas no final da operação.

Quando considerar um pool elástico do Banco de Dados SQL?

Os pools também são adequados para um grande número de bancos de dados com padrões de utilização específicos. Esse padrão é caracterizado por baixa utilização média, com picos de utilização pouco frequentes para determinado banco de dados. Por outro lado, vários bancos de dados com utilização média-alta persistente não devem ser colocados no mesmo pool elástico.

Quanto mais bancos de dados você puder adicionar a um pool, maior será sua economia. Dependendo de seu padrão de utilização do aplicativo, é possível ver economias com apenas dois bancos de dados S3.

As seções a seguir ajudam a compreender como avaliar se sua coleção específica de bancos de dados se beneficia de estar em um pool. Os exemplos usam pools padrão, mas os mesmos princípios se aplicam a pools elásticos em outras camadas de serviço.

Avaliar os padrões de utilização do banco de dados

A figura a seguir mostra um exemplo de banco de dados que passa grande parte do tempo ocioso, mas aumenta periodicamente a atividade. Esse padrão de utilização é adequado para um pool.

Gráfico mostrando um banco de dados individual adequado para um pool.

O gráfico ilustra o uso de DTU ao longo de uma hora, das 12h às 13h, em que cada ponto de dados tem granularidade de um minuto. Às 12:10, o DB1 apresenta picos de até 90 DTUs, mas seu uso geral médio é inferior a cinco DTUs. Um tamanho de computação de S3 é necessário para executar essa carga de trabalho em um único banco de dados, mas esse tamanho mantém a maioria dos recursos sem uso durante períodos de baixa atividade.

Um pool permite que essas DTUs não utilizadas sejam compartilhadas em vários bancos de dados. Um pool reduz as DTUs necessárias e o custo geral.

Com base no exemplo anterior, suponha que outros bancos de dados tenham padrões de uso semelhantes aos do DB1. Nas próximas duas figuras, a utilização de quatro bancos de dados e 20 bancos de dados são colocados em camadas no mesmo gráfico para ilustrar a natureza não sobreposta de sua utilização ao longo do tempo usando o modelo de compra baseado em DTU:

Gráfico mostrando quatro bancos de dados com um padrão de utilização adequado para um pool.

Gráfico mostrando 20 bancos de dados com um padrão de utilização adequado para um pool.

A linha preta no gráfico anterior ilustra a utilização agregada de DTU em todos os 20 bancos de dados. Essa linha mostra que a utilização de DTU agregada nunca excede 100 DTUs e indica que os 20 bancos de dados podem compartilhar 100 eDTUs durante esse período. O resultado é uma redução de 20 vezes em DTUs e uma redução de preço de 13 vezes em comparação com a colocação de cada um dos bancos de dados em tamanhos de computação de S3 para bancos de dados únicos.

Este exemplo é ideal porque:

  • Há grandes diferenças entre o pico de utilização e a utilização média por banco de dados.
  • O pico de utilização de cada banco de dados ocorre em diferentes momentos.
  • eDTUs são compartilhados entre vários bancos de dados.

No modelo de compra de DTU, o preço de um pool é uma função do pool eDTUs. Embora o preço unitário da eDTU para um pool seja 1,5 vezes maior do que o preço unitário da DTU para um único banco de dados, as eDTUs de pool podem ser compartilhadas por muitos bancos de dados e menos eDTUs totais são necessárias. Essas distinções no preço e compartilhamento de eDTU são a base do potencial de economia que os pools podem oferecer.

No modelo de compra vCore, o preço unitário do vCore para pools elásticos é igual ao preço unitário do vCore para bancos de dados individuais.

Como fazer para escolher o tamanho de pool correto?

O melhor tamanho para um pool depende dos recursos agregados necessários para todos os bancos de dados no pool. É necessário determinar:

  • Máximo de recursos de computação utilizados por todos os bancos de dados no pool. Os recursos de computação são indexados por eDTUs ou vCores, dependendo da sua escolha de modelo de compra.
  • Bytes de armazenamento máximo utilizados por todos os bancos de dados no pool.

Para as camadas de serviço e limites de recursos em cada modelo de compra, consulte o modelo de compra baseado em DTU ou modelo de compra baseado em vCore.

As etapas a seguir podem ajudá-lo a estimar se um pool é mais econômico do que bancos de dados individuais:

  1. Estime as eDTUs ou os vCores necessários para o pool:

    1. Para o modelo de compra baseado em DTU:
      1. MAX(<Número total de BDs x Utilização média de DTU por BD>, <Número de BDs que atingem o pico simultaneamente × Pico de utilização de DTU por BD>)
    2. Para o modelo de compra baseado em vCore:
      1. MAX(<Número total de BDs × Utilização média de vCore por BD>, <Número de BDs que atingem o pico simultaneamente × Pico de utilização de vCore por BD>)
  2. Estime o espaço de armazenamento total necessário para o pool adicionando o tamanho dos dados necessários para todos os bancos de dados no pool. Para o modelo de compra de DTU, determine o tamanho do pool de eDTU que fornece essa quantidade de armazenamento.

  3. Para o modelo de compra baseado em DTU, pegue a maior das estimativas de eDTU da etapa 1 e da etapa 2.

    1. Para o modelo de compra baseado em vCore, faça a estimativa de vCore da etapa 1.
  4. Consulte a página de preços do Banco de Dados SQL.

    1. Encontre o menor tamanho de pool maior do que a estimativa da etapa 3.
  5. Compare o preço do pool da etapa 4 com o uso dos tamanhos de computação apropriados para bancos de dados únicos.

Importante

Se o número de bancos de dados em um pool se aproximar do máximo com suporte, considere ogerenciamento de recursos em pools elásticos densos.

Propriedades por banco de dados

Opcionalmente, defina propriedades por banco de dados para modificar os padrões de consumo de recursos em pools elásticos. Para obter mais informações, confira a documentação dos limites de recursos de DTU e vCore para pools elásticos.

Usar outros recursos do Banco de Dados SQL com pools elásticos

Você pode usar outros recursos do Banco de Dados SQL com pools elásticos.

Trabalhos e pools elásticos

Com um pool, as tarefas de gerenciamento são simplificadas com a execução de scripts em trabalhos elásticos. Um trabalho elástico elimina a maior parte do tédio associado a um grande número de bancos de dados.

Para obter mais informações sobre outras ferramentas de banco de dados para trabalhar com vários bancos de dados, consulte Escalar horizontalmente com SQL Database.

Pools elásticos de Hiperescala

Os pools elásticos de Hiperescala do Banco de Dados SQL do Azure estão em disponibilidade geral.

Opções de continuidade dos negócios para bancos de dados em um pool elástico

Os bancos de dados em pool normalmente dão suporte aos mesmos recursos de continuidade dos negócios disponíveis para bancos de dados individuais:

  • Recuperação pontual: a recuperação pontual usa backups de banco de dados automáticos para recuperar um banco de dados em um pool para um ponto no tempo específico. Confira Restauração pontual.
  • Restauração geográfica: a restauração geográfica fornecerá a opção de recuperação padrão quando um banco de dados estiver indisponível devido a um incidente na região em que ele está hospedado. Confira Replicação geográfica.
  • Replicação geográfica ativa: para aplicativos que tenham requisitos de recuperação mais agressivos do que a restauração geográfica pode oferecer, configure a replicação geográfica ativa ou um grupo de failover.

Para obter mais informações sobre as estratégias acima, confira Diretrizes de recuperação de desastres do Banco de Dados SQL do Azure.

Criar um novo pool elástico do Banco de Dados SQL usando o portal do Azure

Você pode criar um pool elástico no portal do Azure de duas maneiras:

  • Crie um pool elástico e selecione um servidor existente ou novo.
  • Crie um pool elástico de um servidor existente.

Para criar um pool elástico e selecionar um servidor existente ou novo:

  1. Vá para a portal do Azure para criar um pool elástico. Pesquise e selecione SQL do Azure.

  2. Selecione Criar para abrir o painel Selecionar opção de implantação do SQL. Para exibir mais informações sobre pools elásticos, no bloco Bancos de Dados, selecione Mostrar detalhes.

  3. No bloco Bancos de Dados, na lista suspensa Tipo de recurso, selecione Pool elástico. Em seguida, selecione Criar.

    Captura de tela que mostra a criação de um pool elástico.

  4. Em seguida, gerencie seu pool elástico por meio do portal do Azure, PowerShell, CLI do Azure, API REST ou T-SQL.

Para criar um pool elástico de um servidor existente:

  1. Acesse um servidor existente e selecione Novo pool para criar um pool diretamente naquele servidor.

    Observação

    Você pode criar vários pools em um servidor, mas não pode adicionar bancos de dados de servidores diferentes ao mesmo pool.

    A camada de serviço do pool determina os recursos disponíveis para os elásticos no pool e a quantidade máxima de recursos disponíveis para cada banco de dados. Para obter mais informações, consulte os limites de recursos para pools elásticos no modelo de DTU. Para saber os limites de recurso baseados em vCore para pools elásticos, confira Limites de recurso baseados em vCore - pools elásticos.

  2. Para configurar os recursos e os preços do pool, selecione Configurar pool. Em seguida, selecione uma camada de serviço, adicione bancos de dados ao pool e configure os limites de recursos para o pool e os bancos de dados.

  3. Após configurar o pool, selecione Aplicar, nomeie o pool e selecione OK para criar o pool.

  4. Em seguida, gerencie seu pool elástico por meio do portal do Azure, PowerShell, CLI do Azure, API REST ou T-SQL.

Monitorar um pool elástico e os bancos de dados

No Portal do Azure, é possível monitorar a utilização de um pool elástico e os bancos de dados no pool. Você também pode criar um conjunto de alterações para o pool elástico e enviar todas as alterações ao mesmo tempo. Essas alterações incluem adicionar ou remover bancos de dados, alterar as configurações de pool elástico ou alterar suas configurações de banco de dados.

Você pode usar as ferramentas de monitoramento de desempenho e alertas internas combinadas com classificações de desempenho. O Banco de Dados SQL também pode emitir métricas e logs de recursos para facilitar o monitoramento.

Estudos de caso de cliente

  • SnelStart: SnelStart usou pools elásticos com Banco de Dados SQL para expandir rapidamente seus serviços de negócios a uma taxa de 1.000 novos bancos de dados SQL por mês.
  • Umbraco: Umbraco usa pools elásticos com Banco de Dados SQL para provisionar e dimensionar serviços rapidamente para milhares de locatários na nuvem.
  • Daxko/CSI: Daxko/CSI usa pools elásticos com Banco de Dados SQL para acelerar seu ciclo de desenvolvimento e aprimorar seus serviços e desempenho ao cliente.