APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela
O Azure Cosmos DB usa a taxa de transferência provisionada em escala automática para gerenciar e dimensionar automaticamente as unidades de solicitação por segundo (RU/s) do seu banco de dados ou contêiner com base no uso. Este artigo responde a perguntas frequentes sobre o dimensionamento automático no Azure Cosmos DB.
Qual é a diferença entre dimensionamento automático e dimensionamento automático dinâmico no Azure Cosmos DB?
O dimensionamento automático ou a taxa de transferência provisionada dimensiona automaticamente as cargas de trabalho com base na região e partição mais ativas. Por outro lado, o dimensionamento automático dinâmico permite que as regiões e partições de suas cargas de trabalho sejam dimensionadas de forma independente com base no uso. Recomendamos o dimensionamento automático dinâmico a todos os clientes que planejam usar o dimensionamento automático.
Como posso ativar o dimensionamento automático dinâmico em uma conta programaticamente?
Você pode usar um modelo do Gerenciador de Recursos com a versão 2023-11-15-preview
da API ou uma versão de visualização posterior para definir a propriedade enablePerRegionPerPartitionAutoscale
como true. Você pode ver essa propriedade no modo de exibição JSON usando a versão de visualização 2023-11-15-preview ou uma versão de visualização posterior.
Você também pode usar a CLI do Azure ou o PowerShell.
// Add Azure Cosmos DB extension 2.0.6-preview for PowerShell
Install-Module -Name Az.CosmosDB -RequiredVersion 2.0.6-preview -AllowPrerelease -AllowClobber -Force
// update the account using this command to enable or disable the property
Update-AzCosmosDBAccount -EnablePerRegionPerPartitionAutoscale $true -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"
// Run this command to see the enablement or disablement status:
Get-AzCosmosDBAccount -ResourceGroupName "<resource-group-name>" -Name "<cosmos-account-name>"
O que acontece com bancos de dados ou contêineres que foram criados no modelo de camada do piloto automático anterior?
Os recursos criados no modelo de camada anterior são automaticamente suportados no novo modelo de RU/s máximo personalizado de escala automática. O limite superior da camada torna-se o novo máximo de RU/s, o que resulta no mesmo intervalo de escala.
Por exemplo, se você selecionou anteriormente a camada que era dimensionada entre 400 RU/s e 4.000 RU/s, o banco de dados ou contêiner agora mostra um máximo de RU/s de 4.000 RU/s, que escala entre 400 RU/s e 4.000 RU/s. Em seguida, você pode alterar o máximo de RU/s para um valor personalizado com base em sua carga de trabalho.
Qual é o ponto de entrada RU/s para dimensionamento automático?
A partir de abril de 2022, você pode definir a escala automática com um máximo de RU/s tão baixo quanto 1.000 RU/s (escalas entre 100 RU/s e 1.000 RU/s). Você também pode definir um intervalo de escala de 200 RU/s para 2.000 RU/s ou 300 RU/s para 3.000 RU/s. Anteriormente, o ponto de entrada era de 400 RU/s a 4.000 RU/s.
Recomendamos essa configuração para cargas de trabalho com requisitos de baixa taxa de transferência, mas que ainda podem ser dimensionadas para o máximo de RU/s.
Com que rapidez a escala automática aumenta com base no aumento do tráfego?
Com o dimensionamento automático, o sistema dimensiona a taxa de transferência (RU/s) T
para cima ou T
para baixo dentro do intervalo de 0,1 × Tmax
com Tmax
base no tráfego de entrada. Como o dimensionamento é automático e instantâneo, a qualquer momento, você pode consumir até o provisionado Tmax
sem atraso.
Como devo proceder para determinar para que RU/s o sistema está atualmente dimensionado?
Use as métricas do Azure Monitor para monitorar o RU/s máximo de escala automática provisionado e a taxa de transferência atual (RU/s) para a qual o sistema é dimensionado.
Qual é o preço do dimensionamento automático?
A cada hora, você é cobrado pela taxa T
de transferência mais alta para a qual o sistema foi dimensionado dentro dessa hora. Se o recurso não tiver solicitações durante a hora ou não tiver sido dimensionado além de 0,1 × Tmax
, você será cobrado pelo mínimo de 0,1 × Tmax
. Para obter detalhes, consulte a página de preços do Azure Cosmos DB.
Como é apresentado o dimensionamento automático na minha fatura?
Em contas de região de gravação única, a taxa de dimensionamento automático por 100 RU/s é 1,5 vezes a taxa de transferência provisionada padrão (manual). Sua fatura mostra o medidor de taxa de transferência provisionado padrão existente. A quantidade deste contador é multiplicada por 1,5. Por exemplo, se o RU/s mais alto para o qual o sistema foi dimensionado em uma hora foi de 6.000 RU/s, você será cobrado de 60 × 1,5 = 90 unidades do medidor para essa hora.
Em contas com regiões de gravação múltipla, a taxa de dimensionamento automático por 100 RU/s é a mesma taxa de transferência de região de gravação múltipla provisionada padrão (manual). Sua fatura mostra o medidor de várias regiões de gravação existente. Como as taxas são as mesmas, se você usar o dimensionamento automático, verá a mesma quantidade que para a taxa de transferência padrão.
O dimensionamento automático funciona com capacidade reservada?
Sim. Com capacidade reservada para contas com regiões de gravação única, o desconto de reserva para recursos de dimensionamento automático é aplicado ao uso do medidor em uma proporção de 1,5 vezes a proporção da região específica. Por exemplo, se você quiser usar a capacidade reservada para cobrir 10.000 RU/s em escala automática, planeje comprar 15.000 RU/s de capacidade reservada em geral.
A capacidade reservada de região de gravação múltipla funciona da mesma forma para dimensionamento automático e taxa de transferência provisionada padrão (manual). Para obter mais informações, consulte Capacidade reservada do Azure Cosmos DB.
O dimensionamento automático funciona com a camada gratuita do Azure Cosmos DB?
Sim. Na camada gratuita, você pode usar a taxa de transferência de dimensionamento automático em um banco de dados ou em um contêiner. Saiba mais sobre como a cobrança de nível gratuito funciona com o dimensionamento automático.
O dimensionamento automático é suportado para todas as APIs?
Sim. O dimensionamento automático é suportado para todas as APIs: NoSQL, Gremlin, Table, Cassandra e MongoDB.
O dimensionamento automático é suportado para contas de escrita em várias regiões?
Sim. O máximo de RU/s está disponível em cada região que você adiciona à conta do Azure Cosmos DB.
Como devo proceder para ativar o dimensionamento automático em novas bases de dados ou contentores?
Posso habilitar o dimensionamento automático em um banco de dados ou contêiner existente?
Sim. Você também pode alternar entre o dimensionamento automático e a taxa de transferência provisionada padrão (manual). Atualmente, para todas as APIs, você pode usar o portal do Azure, a CLI do Azure ou o PowerShell para fazer essas operações. Por design, você não pode usar os SDKs de cliente do Azure Cosmos DB ou um modelo do Azure Resource Manager para migrar entre a taxa de transferência provisionada manual e o dimensionamento automático. No entanto, você pode usar SDKs de cliente ou um modelo do Azure Resource Manager para criar novos recursos de dimensionamento automático e alterar o máximo de RU/s em um recurso de dimensionamento automático existente.
Como funciona a migração entre o dimensionamento automático e o débito aprovisionado padrão (manual)?
Conceitualmente, alterar o tipo de taxa de transferência é um processo de dois estágios. Primeiro, você envia uma solicitação para alterar as configurações de taxa de transferência para usar o dimensionamento automático ou a taxa de transferência provisionada manual. Em ambos os casos, o sistema determina e define automaticamente um valor inicial de RU/s com base nas configurações atuais de taxa de transferência e armazenamento. Durante esta etapa, nenhum valor de RU/s fornecido pelo usuário é aceito. Em seguida, após a conclusão da atualização, você pode alterar o RU/s para acomodar sua carga de trabalho.
Migrar da taxa de transferência provisionada padrão (manual) para o dimensionamento automático
Para um contêiner, use a seguinte fórmula para estimar o RU/s máximo inicial de escala automática:
MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10)
arredondado para o valor mais próximo de 1.000 RU/s.
O RU/s máximo inicial real pode variar dependendo da configuração da sua conta.
Exemplo #1: Você tem um contêiner que tem uma taxa de transferência provisionada manual de 10.000 RU/s e 25 GB de armazenamento. Quando você habilita o dimensionamento automático, o RU/s máximo inicial é de 10.000 RU/s, que pode ser dimensionado entre 1.000 RU/s e 10.000 RU/s.
Exemplo #2: Você tem um contêiner que tem uma taxa de transferência provisionada manual de 50.000 RU/s e 25.000 GB de armazenamento. Quando você habilita o dimensionamento automático, o RU/s máximo inicial é de 250.000 RU/s, que pode ser dimensionado entre 25.000 RU/s e 250.000 RU/s.
Migrar do dimensionamento automático para a taxa de transferência provisionada padrão (manual)
A taxa de transferência inicial provisionada manual é igual ao RU/s máximo de escala automática atual.
Exemplo: Você tem um banco de dados ou contêiner de dimensionamento automático que tem um máximo de RU/s de 20.000 RU/s (escala entre 2.000 RU/s e 20.000 RU/s). Quando você atualiza para usar a taxa de transferência provisionada manual, a taxa de transferência inicial é de 20.000 RU/s.
Se você precisar migrar um grande número de recursos de taxa de transferência, considere usar o script da CLI do Azure - Converter em Dimensionamento Automático.
Posso utilizar a CLI do Azure, o PowerShell ou o Azure Resource Manager para gerir bases de dados ou contentores que utilizam dimensionamento automático?
Sim. Para habilitar programaticamente o dimensionamento automático em um banco de dados ou contêiner existente, você pode usar a CLI do Azure ou o PowerShell.
Para criar um novo banco de dados ou contêiner que usa o dimensionamento automático, você pode usar a CLI do Azure, o PowerShell ou um modelo do Azure Resource Manager.
O dimensionamento automático é suportado para bases de dados de débito partilhado?
Sim. Para habilitar o dimensionamento automático para um banco de dados de taxa de transferência compartilhado, ao criar o banco de dados, selecione o dimensionamento automático e a opção Provisionar taxa de transferência.
Quantos contentores são permitidos por base de dados de débito partilhado quando o dimensionamento automático está ativado?
O Azure Cosmos DB impõe um máximo de 25 contêineres em um banco de dados de taxa de transferência compartilhado. O máximo se aplica a bancos de dados com dimensionamento automático ou taxa de transferência padrão (manual).
Como é que o dimensionamento automático afeta o nível de consistência da base de dados?
O dimensionamento automático não tem efeito sobre o nível de consistência de um banco de dados.
Para obter mais informações, consulte Níveis de consistência.
Que limite de armazenamento está associado a cada opção de máximo de RU/s?
O limite de armazenamento em GB para cada RU/s máximo é o máximo de RU/s do banco de dados ou contêiner dividido por 10. Por exemplo, se o máximo de RU/s for 20.000 RU/s, o recurso pode suportar 2.000 GB de armazenamento.
Para obter as opções máximas de RU/s e armazenamento disponíveis, consulte Provisionar limites de dimensionamento automático de taxa de transferência.
O que acontece se eu exceder o limite de armazenamento associado à minha taxa de transferência máxima?
Se o limite de armazenamento associado à taxa de transferência máxima do banco de dados ou contêiner for excedido, o Azure Cosmos DB aumentará automaticamente a taxa de transferência máxima para o próximo RU/s mais alto que pode dar suporte a esse nível de armazenamento.
Para um cenário de exemplo, se você começar com um máximo de RU/s de 50.000 RU/s (escalas entre 5.000 RU/s e 50.000 RU/s), poderá armazenar até 5.000 GB de dados. Se o tamanho do armazenamento aumentar para 5.001 GB, o armazenamento agora é de 6.000 GB e o novo máximo de RU/s é de 60.000 RU/s (escala entre 6.000 RU/s e 60.000 RU/s).
Posso alterar o máximo de RU/s numa base de dados ou num contentor?
Sim. Para obter mais informações, consulte Como provisionar a taxa de transferência de dimensionamento automático.
Quando você altera o máximo de RU/s, dependendo do valor solicitado, a operação assíncrona pode levar de 4 a 6 horas para ser concluída. Mais informações.
Como posso aumentar o máximo de RU/s?
Quando você envia uma solicitação para aumentar o máximo de RU/s Tmax
, dependendo do máximo de RU/s selecionado, o serviço fornece mais recursos para suportar o máximo de RU/s mais alto. Enquanto isso acontece, sua carga de trabalho e operações existentes não são afetadas. O sistema continua a dimensionar seu banco de dados ou contêiner entre os 0,1 × Tmax
anteriores e Tmax
até que o novo intervalo de escala de 0,1 × Tmax_new
esteja Tmax_new
pronto.
Como posso diminuir o máximo de RU/s?
Quando você reduz o máximo de RU/s, o valor mínimo para o qual você pode defini-lo é MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10)
arredondado para os 1.000 RU/s mais próximos.
Exemplo #1: Você tem um contêiner de dimensionamento automático que tem um máximo de RU/s de 20.000 RU/s (escala entre 2.000 RU/s e 20.000 RU/s) e 1.500 GB de armazenamento. O valor mínimo mais baixo que você pode definir RU/s máximo é MAX(1,000, 20,000 / 10, 1,500 × 10)
= 15.000 RU/s (escalas entre 1.500 RU/s e 15.000 RU/s).
Exemplo #2: Você tem um contêiner de dimensionamento automático que tem um máximo de RU/s de 100.000 RU/s e 100 GB de armazenamento. Agora, você escala o máximo de RU/s até 150.000 RU/s (escala entre 15.000 RU/s e 150.000 RU/s). O valor mínimo mais baixo que agora você pode definir RU/s máximo é MAX(1,000, 150,000 / 10, 100 × 10)
= 15.000 RU/s (escalas entre 1.500 RU/s e 15.000 RU/s).
Para um banco de dados de taxa de transferência compartilhado, quando você reduz o máximo de RU/s, o valor mínimo para o qual você pode defini-lo é MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10, 1,000 + (MAX(Container count - 25, 0) × 1,000))
arredondado para os 1.000 RU/s mais próximos.
Estas fórmulas e exemplos aplicam-se ao RU/s máximo mínimo de escala automática que pode definir. Eles são separados do intervalo de 0,1 × Tmax
para Tmax
o qual o sistema é dimensionado automaticamente. Independentemente do RU/s máximo, o sistema sempre escala entre 0,1 × Tmax
e Tmax
.
Como funciona o TTL com o dimensionamento automático?
As operações de tempo de vida (TTL) não afetam o dimensionamento de RU/s no dimensionamento automático. Quaisquer RUs que são consumidos devido ao TTL não fazem parte do RU/s faturado do contêiner de dimensionamento automático.
Por exemplo, para um contêiner de dimensionamento automático que tenha de 400 RU/s a 4.000 RU/s:
- Hora 1: T = 0: O contêiner não tem uso (sem TTL ou solicitações de carga de trabalho). O RU/s faturável é de 400 RU/s.
- Hora 1: T = 1: TTL está ativado.
- Hora 1: T = 2: O contêiner começa a receber solicitações. As solicitações consomem 1.000 RU/s em 1 segundo. São utilizados 200 RU/s de TTL. O RU/s faturável ainda é de 1.000 RU/s. Independentemente de quando as exclusões TTL ocorrem, elas não afetam a lógica de dimensionamento automático.
Como é que o máximo de RU/s mapeia para partições físicas?
Quando você seleciona pela primeira vez o máximo de RU/s, o Azure Cosmos DB provisiona dividindo o máximo de RU/s por 10.000 RU/s para obter o número de partições físicas necessárias. Cada partição física pode suportar até 10.000 RU/s e 50 GB de armazenamento. À medida que o tamanho do armazenamento aumenta, o Azure Cosmos DB divide automaticamente as partições para adicionar mais partições físicas para lidar com o aumento do armazenamento. Se o armazenamento exceder o limite associado, o Azure Cosmos DB aumentará o máximo de RU/s.
O máximo de RU/s do banco de dados ou contêiner é dividido uniformemente em todas as partições físicas. A taxa de transferência total para a qual qualquer partição física pode ser dimensionada é o RU/s máximo do banco de dados ou contêiner dividido pelo número de partições físicas.
O que acontece se os pedidos recebidos excederem o máximo de RU/s da base de dados ou do contentor?
Se o RU/s total consumido exceder o máximo de RU/s do banco de dados ou contêiner, as solicitações que excederem o máximo de RU/s serão limitadas e retornarão um status de código 429. As solicitações que resultam em mais de 100% de utilização normalizada são limitadas. A utilização normalizada é definida como o máximo da utilização de RU/s em todas as partições físicas.
Por exemplo, sua taxa de transferência máxima é de 20.000 RU/s e você tem duas partições físicas, P_1 e P_2. Cada partição é capaz de escalar para 10.000 RU/s. Em qualquer segundo, se P_1 usou 6.000 RUs e P_2 usou 8.000 RUs, a utilização normalizada é MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU)
= 0,8.
Nota
Os SDKs de cliente do Azure Cosmos DB e as ferramentas de importação de dados (Azure Data Factory, a biblioteca de executores em massa) tentam novamente automaticamente depois que um erro de código 429 é retornado, portanto, erros ocasionais de código 429 não são problemáticos. Um número alto sustentado de erros de código 429 pode indicar que você precisa aumentar o máximo de RU/s ou rever sua estratégia de particionamento para incluir uma partição quente.
Pode ocorrer limitação ou erros de limitação de taxa quando o dimensionamento automático está ativado?
Sim. É possível ver erros de código 429 em dois cenários.
Primeiro, quando o RU/s total consumido excede o máximo de RU/s do banco de dados ou contêiner, o serviço limita as solicitações de acordo.
Em segundo lugar, se um valor de chave de partição lógica tiver um número desproporcionalmente maior de solicitações em comparação com outros valores de chave de partição, como em uma partição quente, a partição física subjacente poderá exceder seu orçamento RU/s. Como melhor prática, para evitar partições frequentes, escolha uma boa chave de partição que resulte numa distribuição uniforme tanto do armazenamento como do débito.
Por exemplo, se você selecionar a opção de taxa de transferência máxima de 20.000 RU/s e tiver 200 GB de armazenamento, se tiver quatro partições físicas, cada partição física poderá ser dimensionada automaticamente até 5.000 RU/s. Se uma partição ativa estiver em uma chave de partição lógica específica, você verá erros de código 429 quando a partição física subjacente em que reside exceder 5.000 RU/s ou 100% de utilização normalizada.
Ver erros de código 429 quando você usa o dimensionamento automático não indica necessariamente um problema com seu banco de dados ou contêiner. Geralmente para uma carga de trabalho de produção, se entre 1% e 5% das solicitações tiverem erros de código 429 e sua latência de ponta a ponta for aceitável, os erros são um sinal saudável de que o RU/s está sendo totalmente utilizado. nenhuma ação necessária.
Saiba como interpretar e depurar erros de limitação de taxa do código 429.
O consumo normalizado de RU/s pode ser de 100 por cento se o dimensionamento automático não dimensionar para o máximo de RU/s?
Sim. Para obter mais informações, consulte Monitorar RU/s normalizado.
Próximos passos
- Saiba como habilitar o dimensionamento automático em um banco de dados ou contêiner do Azure Cosmos DB.
- Saiba mais sobre os benefícios da taxa de transferência provisionada usando o dimensionamento automático.
- Saiba mais sobre partições lógicas e físicas.