Editar

Compartilhar via


Perguntas frequentes sobre a taxa de transferência provisionada de dimensionamento automático no Azure Cosmos DB

APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin Table

O Azure Cosmos DB usa a taxa de transferência provisionada com dimensionamento automático para gerenciar e dimensionar automaticamente as unidades de solicitação por segundo (RU/s) do banco de dados ou contêiner com base no uso. Este artigo responde às perguntas frequentes mais comuns sobre o dimensionamento automático do Azure Cosmos DB.

Qual é a diferença entre escala automática e escala automática dinâmica no Azure Cosmos DB?

A escala automática ou produtividade provisionada de escala automática dimensiona as cargas de trabalho com base na região e na partição mais ativas. Por outro lado, a escala automática dinâmica permite que as regiões e partições de suas cargas de trabalho sejam dimensionadas de forma independente com base no uso. Recomendamos usar a escala automática dinâmica para todos os clientes que planejam usar o recurso de escala automática.

Como posso habilitar a escala automática dinâmica programaticamente em uma conta?

Você pode usar um modelo do Resource Manager com versão de API 2023-11-15-preview ou versão de visualização posterior para definir a propriedade enablePerRegionPerPartitionAutoscale como verdadeira. Você pode ver essa propriedade na exibição JSON usando a versão preview 2023-11-15-preview ou uma versão preview posterior. Também é possível 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 irá acontecer com os bancos de dados ou contêineres que foram criados no modelo de nível anterior, o piloto automático?

Os recursos criados no modelo do nível anterior foram automaticamente compatibilizados para o novo modelo de dimensionamento automático com um máximo de RU/s personalizado. O limite superior da camada torna-se o novo máximo de RU/s, que resulta no mesmo intervalo de escala.

Por exemplo, se anteriormente você selecionou um nível de transferência dimensionado entre 400 e 4.000 RU/s, o banco de dados ou o contêiner agora mostrará um máximo de 4.000 RU/s, podendo ser dimensionado entre 400 e 4.000 RU/s. Em seguida, você pode alterar o máximo de RU/s para um valor personalizado baseado na sua carga de trabalho.

Qual é o valor inicial de RU/s para o dimensionamento automático?

A partir de abril de 2022, você passou a poder definir o dimensionamento automático com um máximo de RU/s de 1.000 RU/s (dimensionamento entre 100 RU/s e 1.000 RU/s). Você também passou a poder definir intervalos de dimensionamento de 200 RU/s a 2.000 RU/s ou 300 RU/s e 3.000 RU/s. Anteriormente, o valor inicial era de 400 a 4.000 RU/s.

Recomendamos essa configuração para cargas de trabalho que requerem uma baixa taxa de transferência, mas mesmo assim podem ser dimensionadas para o número máximo de RU/s.

Com que rapidez o dimensionamento automático aumenta conforme o aumento do tráfego?

Com o dimensionamento automático, o sistema aumenta T ou reduz T a taxa de transferência (RU/s) dentro do intervalo de 0,1 x Tmax até Tmax, com base no tráfego de entrada. Como o dimensionamento é automático e instantâneo, a qualquer momento, é possível consumir até o Tmax provisionado sem atraso.

Como posso determinar para quais RU/s o sistema está dimensionado no momento?

Use as métricas do Azure Monitor para monitorar tanto o máximo de RU/s provisionado dimensionado automaticamente quanto a taxa de transferência (RU/s) provisionada atual para a qual o sistema está dimensionado.

Qual é o preço para o dimensionamento automático?

A cada hora, você será cobrado pela maior taxa de transferência T para a qual o sistema é dimensionado durante aquela hora. Se o seu recurso não recebeu nenhuma solicitação durante a hora em curso ou não aumentou além de 0,1 x Tmax, você será cobrado pelo mínimo de 0,1 x Tmax. Para obter mais detalhes, confira a página de preços do Azure Cosmos DB.

Como o dimensionamento automático é mostrado na minha fatura?

Nas contas com apenas uma região de gravação, a tarifa do dimensionamento automático por 100 RU/s é 1,5 vezes a tarifa da taxa de transferência provisionada padrão (manual). Sua fatura mostra o medidor da taxa de transferência provisionada padrão existente. A quantidade desse medidor será multiplicada por 1,5. Por exemplo, se o número mais alto de RU/s para o qual o sistema dimensionou em uma hora foi de 6.000 RU/s, você será cobrado 60 x 1,5 = 90 unidades do medidor para essa hora.

Nas contas com várias regiões de gravação, a tarifa do dimensionamento automático por 100 RU/s é a mesma da tarifa da taxa de transferência provisionada padrão (manual) para várias regiões de gravação. Sua fatura mostra o medidor de várias regiões de gravação existente. Como as tarifas são iguais, se usar o dimensionamento automático você verá a mesma quantidade do que com a taxa de transferência padrão.

O dimensionamento automático funciona com capacidade reservada?

Sim. Com a capacidade reservada para contas com apenas uma região de gravação, o desconto da reserva para recursos de dimensionamento automático é aplicado ao uso do medidor a uma tarifa de 1,5 vezes a tarifa da região específica. Por exemplo, se você quiser usar a capacidade reservada para cobrir 10.000 RU/s de dimensionamento automático, deverá planejar a compra de 15.000 RU/s de capacidade reservada no geral.

A capacidade reservada de contas com várias regiões de gravação funciona da mesma forma para o dimensionamento automático quanto para a taxa de transferência padrão (manual) provisionada. Para obter mais informações, confira Capacidade reservada do Azure Cosmos DB.

O dimensionamento automático funciona com o plano gratuito do Azure Cosmos DB?

Sim. No plano gratuito, você pode usar a taxa de transferência com dimensionamento automático em um banco de dados ou em um contêiner. Saiba mais sobre como funciona a cobrança do plano gratuito com o dimensionamento automático.

O dimensionamento automático tem suporte para todas as APIs?

Sim. Sim, o dimensionamento automático é compatível com todas as APIs: NoSQL, Gremlin, Table, Cassandra e MongoDB.

O dimensionamento automático tem suporte para contas com várias regiões de gravação?

Sim. O máximo de RU/s está disponível em cada região que você adicionar à conta do Azure Cosmos DB.

Como posso habilitar o dimensionamento automático em novos bancos de dados ou contêineres?

Posso habilitar o dimensionamento automático em um banco de dados ou contêiner existentes?

Sim. Você também pode alternar entre a taxa de transferência com 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 executar 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 fazer uma migração entre a taxa de transferência provisionada manual e a taxa de transferência provisionada com dimensionamento automático. No entanto, você pode usar os 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 a taxa de transferência padrão (manual) provisionada?

Conceitualmente, a alteração do tipo de taxa de transferência é um processo de duas etapas. 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 manual provisionada. Em ambos os casos, o sistema determina e define automaticamente um valor inicial de RU/s com base nas configurações e armazenamento atuais da taxa de transferência. Durante essa etapa, o valor de RU/s fornecido pelo usuário não é aceito. A seguir, após a atualização ter sido concluída, você pode alterar as 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 fórmula a seguir para estimar o máximo de RU/s inicial do dimensionamento automático:

MAX(1,000, current manual provisioned RU/s, maximum RU/s ever provisioned / 10, storage in GB × 10) arredondado para o milhar de RU/s mais próximo.

O máximo de RU/s inicial do dimensionamento automático real poderá variar dependendo da configuração da sua conta.

Exemplo n.° 1: você tem um contêiner com uma taxa de transferência provisionada manual de 10.000 RU/s e 25 GB de armazenamento. Quando você habilitar o dimensionamento automático, o máximo de RU/s inicial do dimensionamento automático será de 10.000 RU/s, podendo ser dimensionado entre 1.000 e 10.000 RU/s.

Exemplo n.° 2: você tem um contêiner com uma taxa de transferência provisionada manual de 50.000 RU/s e 25.000 GB de armazenamento. Quando você habilitar o dimensionamento automático,o máximo de RU/s inicial do dimensionamento automático será de 250.000 RU/s, podendo ser dimensionado entre 25.000 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 provisionada manual inicial será igual ao máximo de RU/s do dimensionamento automático atual.

Por exemplo: você tem um banco de dados ou contêiner com dimensionamento automático que tem um máximo de RU/s de 20.000 RU/s (podendo ser dimensionado entre 2.000 RU/s e 20.000 RU/s). Quando você atualizar para usar a taxa de transferência provisionada manual, a taxa de transferência inicial será 20.000 RU/s.

Se você precisar migrar um grande número de recursos de produtividade, considere usar este script da CLI do Azure – Converter em Escala Automática.

Posso usar a CLI do Azure, o PowerShell ou o Azure Resource Manager para gerenciar bancos de dados ou contêineres que usam o dimensionamento automático?

Sim. Para habilitar o dimensionamento automático programaticamente em um banco de dados ou contêiner existentes, você pode usar a CLI do Azure ou o PowerShell.

Para criar um novo banco de dados ou contêiner que usem o dimensionamento automático, você pode usar a CLI do Azure, o PowerShell ou o modelo do Azure Resource Manager.

O dimensionamento automático é compatível com os bancos de dados de taxa de transferência compartilhada?

Sim. Para habilitar o dimensionamento automático para um banco de dados com taxa de transferência compartilhada, ao criar o banco de dados você deve selecionar o dimensionamento automático e a opção Provisionar taxa de transferência.

Quantos contêineres são permitidos por banco de dados de taxa de transferência compartilhada quando o dimensionamento automático estiver habilitado?

O Azure Cosmos DB implementa um máximo de 25 contêineres em um banco de dados com taxa de transferência compartilhada. O máximo se aplica aos bancos de dados que tenham tanto uma taxa de transferência com dimensionamento automático quanto uma taxa de transferência padrão (manual).

Como o dimensionamento automático afeta o nível de consistência do banco de dados?

O dimensionamento automático não afeta o nível de consistência de um banco de dados.

Para obter mais informações, consulte Níveis de consistência.

Qual é o limite de armazenamento associado a cada opção de número máximo de RU/s?

O limite de armazenamento em GB para cada máximo de RU/s é o número 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 dar suporte a 2.000 GB de armazenamento.

Para obter as opções disponíveis de armazenamento e número máximo de RU/s, confira Provisionar limites de taxa de transferência com dimensionamento automático.

O que acontece se eu exceder o limite de armazenamento associado à minha produtividade máxima?

Se o limite de armazenamento associado à produtividade máxima do banco de dados ou do contêiner for excedida, o Azure Cosmos DB aumentará automaticamente a produtividade máxima para o próximo número mais alto de RU/s compatível com esse nível de armazenamento.

Como um exemplo de cenário: se começar com um máximo de 50.000 RU/s (podendo ser dimensionado entre 5.000 e 50.000 RU/s), você poderá armazenar até 5.000 GB de dados. Se o tamanho do seu armazenamento aumentar para 5.001 GB, o armazenamento agora será de 6.000 GB e o novo máximo de RU/s será de 60.000 RU/s (podendo ser dimensionado entre 6.000 RU/s e 60.000 RU/s).

Posso alterar o máximo de RU/s em um banco de dados ou contêiner?

Sim. Para obter mais informações, confira Como provisionar a taxa de transferência com 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. Saiba mais.

Como faço para aumentar o número 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 provisiona mais recursos para dar suporte a um máximo de RU/s mais alto. Durante esse processo, a carga de trabalho e as operações existentes não são afetadas. O sistema continuará a dimensionar o banco de dados ou contêiner entre a opção anterior de 0,1 x Tmax e Tmax, até que o novo intervalo de dimensionamento de 0,1 x Tmax_new a Tmax_new esteja pronto para uso.

Como faço para reduzir o número máximo de RU/s?

Quando você reduz o máximo de RU/s, o valor mínimo para o qual você pode configurá-lo é MAX(1,000, highest maximum RU/s ever provisioned / 10, current storage in GB × 10), arredondado para o milhar de RU/s mais próximo.

Exemplo n.º 1: você tem um contêiner com dimensionamento automático, um máximo de 20.000 RU/s (podendo ser dimensionado entre 2.000 RU/s e 20.000 RU/s) e 1.500 GB de armazenamento. O valor mínimo mais baixo para o qual você pode definir o número máximo de RU/s é: MAX(1,000, 20,000 / 10, 1,500 × 10) = 15.000 RU/s (podendo ser dimensionado entre 1.500 e 15.000 RU/s).

Exemplo n.º 2: você tem um contêiner com dimensionamento automático, um máximo de 100.000 RU/s e 100 GB de armazenamento. Agora, você pode dimensionar o máximo de RU/s para até 150.000 (podendo ser dimensionado entre 15.000 e 150.000 RU/s). O valor mínimo mais baixo para o qual você agora pode definir o número máximo de RU/s é: MAX(1,000, 150,000 / 10, 100 × 10) = 15.000 RU/s (podendo ser dimensionado entre 1.500 e 15.000 RU/s).

Para um banco de dados de taxa de transferência compartilhada, ao reduzir o número 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 o milhar de RU/s mais próximo.

Essas fórmulas e exemplos se aplicam ao dimensionamento automático mínimo do número máximo de RU/s que você pode definir. Esse é um cálculo separado do intervalo 0,1 × Tmax a Tmax para o qual o sistema é escalado automaticamente. Independentemente do número máximo de RU/s, o sistema é sempre dimensionado entre 0,1 × Tmax e Tmax.

Como o TTL funciona com o dimensionamento automático?

As operações de TTL (vida útil) não afetam o dimensionamento de RU/s no dimensionamento automático. O total de RUs consumidas devido à TTL não fazem parte das RU/s do contêiner com dimensionamento automático que são cobradas.

Por exemplo, para um contêiner com dimensionamento automático que tem de 400 RU/s a 4.000 RU/s:

  • Hora 1: T=0: O contêiner não tem utilização (nenhuma solicitação de TTL ou de carga de trabalho). As RU/s faturáveis são 400 RU/s.
  • Hora 1: T=1: O TTL está habilitado.
  • Hora 1: T=2: o contêiner começa a receber solicitações. As solicitações consomem 1.000 RU/s em 1 segundo. 200 RU/s de TTL são usadas. O número de RU/s faturáveis continuam sendo 1.000 RU/s. Independentemente de quando ocorrem, as exclusões da TTL não afetam a lógica de dimensionamento do dimensionamento automático.

Como o máximo de RU/s é mapeado para as partições físicas?

Quando você seleciona o máximo de RU/s pela primeira vez, 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 dar suporte a até 10.000 RU/s e 50 GB de armazenamento. À medida que o tamanho do armazenamento aumenta, o Azure Cosmos DB divide as partições automaticamente para adicionar mais partições físicas e poder lidar com o aumento do armazenamento. Se o armazenamento exceder o limite associado, o Azure Cosmos DB irá aumentar o número máximo de RU/s.

O máximo de RU/s do banco de dados ou contêiner é dividido igualmente entre todas as partições físicas. A taxa de transferência total para a qual qualquer partição física individual pode ser dimensionada é o número máximo de RU/s do banco de dados ou contêiner dividido pelo número de partições físicas.

O que acontece se as solicitações de entrada excederem o máximo de RU/s do banco de dados ou contêiner?

Se o total de RU/s consumidas exceder o máximo de RU/s do banco de dados ou contêiner, as solicitações que excederem o número máximo de RU/s serão limitadas e retornarão um código de status 429. As solicitações que resultarem em mais de 100% da utilização normalizada serão limitadas. A utilização normalizada é definida como a máxima utilização de RU/s em todas as partições físicas.

Por exemplo, se a sua taxa de transferência máxima for de 20.000 RU/s e você tiver duas partições físicas, P_1 e P_2. Cada partição será capaz de ser dimensionada até 10.000 RU/s. Em um segundo específico, se P_1 tiver usado 6.000 RUs e P_2 8.000 RUs, a utilização normalizada é MAX(6,000 RU / 10,000 RU, 8,000 RU / 10,000 RU) = 0,8.

Observação

Os SDKs do cliente do Azure Cosmos DB e as ferramentas de importação de dados (Azure Data Factory, a biblioteca de executores em massa) tentarão repetir a operação automaticamente após um erro de código 429 ser retornado e, portanto, os erros de código 429 esporádicos não são muito problemáticos. Um número consistentemente alto 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 de modo a incluir uma partição frequente.

Os erros de limitação de solicitações ou limitação de taxa podem ocorrer quando o dimensionamento automático estiver habilitado?

Sim. O erro de código 429 pode ocorrer em dois tipos de cenário.

O primeiro ocorre quando o total de RU/s consumidas excede o máximo de RU/s do banco de dados ou do contêiner e o serviço limita as solicitações adequadamente.

O segundo ocorre se o valor da chave de uma partição lógica tiver um número de solicitações desproporcionalmente mais alto do que o valor da chave de outra partição e a partição física subjacente exceder seu orçamento de RU/s. Como melhor prática, para evitar partições ativas, escolha uma chave de partição adequada que resulte em uma distribuição uniforme do armazenamento e da taxa de transferência.

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, com quatro partições físicas, cada partição física pode ser dimensionada para até 5.000 RU/s. Se uma partição frequente estiver em uma chave de partição lógica específica, você verá um erro de código 429 quando a partição física subjacente na qual ela reside exceder 5.000 RU/s ou 100% da 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. De modo geral, no caso de 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 serão um sinal íntegro de que as RU/s estão sendo totalmente utilizadas. Nenhuma ação é necessária.

Saiba mais sobre como interpretar e depurar erros de limitação de taxa com o código 429.

O consumo normalizado de RU/s poderá ser de 100% se o dimensionamento automático não estiver dimensionando para o número máximo de RU/s?

Sim. Para obter mais informações, confira Monitorar RU/s normalizadas.