Dimensionar partições e réplicas de consulta e indexação de cargas de trabalho no Azure SearchScale partitions and replicas for query and indexing workloads in Azure Search

Depois que você escolhe um tipo de preço e provisiona um serviço de pesquisa, a próxima etapa é, como opção, aumentar o número de réplicas ou partições usadas pelo serviço.After you choose a pricing tier and provision a search service, the next step is to optionally increase the number of replicas or partitions used by your service. Cada camada oferece um número fixo de unidades de cobrança.Each tier offers a fixed number of billing units. Este artigo explica como alocar essas unidades para obter uma configuração ideal que equilibra os requisitos para execução da consulta, indexação e armazenamento.This article explains how to allocate those units to achieve an optimal configuration that balances your requirements for query execution, indexing, and storage.

Configuração de recurso está disponível quando você configura um serviço na camada básica ou uma da camadas Standard ou armazenamento otimizado.Resource configuration is available when you set up a service at the Basic tier or one of the Standard or Storage Optimized tiers. Para os serviços nessas camadas, a capacidade é comprada em incrementos de unidades de pesquisa (SUs), em que cada partição e réplica conta como uma SU.For services at these tiers, capacity is purchased in increments of search units (SUs) where each partition and replica counts as one SU.

Usar menos SUs resulta em uma lista menor proporcionalmente.Using fewer SUs results in a proportionally lower bill. A cobrança fica em vigor durante o tempo de configuração do serviço.Billing is in effect for as long as the service is set up. Se, no momento, você não estiver usando um serviço, a única maneira de evitar a cobrança será excluindo o serviço e o recriando quando precisar dele.If you are temporarily not using a service, the only way to avoid billing is by deleting the service and then re-creating it when you need it.

Observação

Excluir um serviço exclui tudo nele.Deleting a service deletes everything on it. Há um recurso no Azure Search para fazer backup e restaurar dados de pesquisa persistentes.There is no facility within Azure Search for backing up and restoring persisted search data. Para reimplantar um índice existente em um novo serviço, você deverá executar o programa usado para criar e carregá-lo originalmente.To redeploy an existing index on a new service, you should run the program used to create and load it originally.

Terminologia: réplicas e partiçõesTerminology: replicas and partitions

Partições e réplicas são os principais recursos que dão suporte a um serviço de pesquisa.Replicas and partitions are the primary resources that back a search service.

ResourceResource DefiniçãoDefinition
PartiçõesPartitions Fornecem armazenamento de índice e E/S para operações de leitura/gravação (por exemplo, ao recompilar ou atualizar um índice).Provides index storage and I/O for read/write operations (for example, when rebuilding or refreshing an index).
RéplicasReplicas Instâncias do serviço de pesquisa, usadas principalmente para equilibrar a carga das operações de consulta.Instances of the search service, used primarily to load balance query operations. Cada réplica sempre hospeda uma cópia de um índice.Each replica always hosts one copy of an index. Se você tiver 12 réplicas, terá 12 cópias de cada índice carregadas no serviço.If you have 12 replicas, you will have 12 copies of every index loaded on the service.

Observação

Não há uma maneira de manipular ou gerenciar diretamente quais índices são executados em uma réplica.There is no way to directly manipulate or manage which indexes run on a replica. Uma cópia de cada índice em cada réplica faz parte da arquitetura do serviço.One copy of each index on every replica is part of the service architecture.

Como alocar partições e réplicasHow to allocate replicas and partitions

No Azure Search, um serviço recebe inicialmente um nível mínimo de recursos compostos por uma partição e uma réplica.In Azure Search, a service is initially allocated a minimal level of resources consisting of one partition and one replica. Para tipos que dão suporte a isso, você poderá ajustar de forma incremental a capacidade de recursos computacionais aumentando as partições, se precisar de mais armazenamento e E/S ou adicionar mais réplicas para volumes maiores de consulta ou melhor desempenho.For tiers that support it, you can incrementally adjust computational resources by increasing partitions if you need more storage and I/O, or add more replicas for larger query volumes or better performance. Um único serviço deve ter recursos suficientes para manipular todas as cargas de trabalho (indexação e consultas).A single service must have sufficient resources to handle all workloads (indexing and queries). Você não pode subdividir cargas de trabalho entre vários serviços.You cannot subdivide workloads among multiple services.

Para aumentar ou alterar a alocação de réplicas e partições, recomendamos o uso do portal do Azure.To increase or change the allocation of replicas and partitions, we recommend using the Azure portal. O portal aplica limites às combinações permitidas que permaneçam abaixo dos limites máximos.The portal enforces limits on allowable combinations that stay below maximum limits. Se você precisar de uma abordagem de provisionamento baseado em código ou script, o Azure PowerShell ou o API REST de gerenciamento são soluções alternativas.If you require a script-based or code-based provisioning approach, the Azure PowerShell or the Management REST API are alternative solutions.

Em geral, os aplicativos de pesquisa precisam de mais réplicas do que partições, especialmente quando as operações de serviço são polarizadas para cargas de trabalho de consulta.Generally, search applications need more replicas than partitions, particularly when the service operations are biased toward query workloads. A seção sobre alta disponibilidade , explica o motivo.The section on high availability explains why.

  1. Entre no portal do Azure e selecione o serviço de pesquisa.Sign in to the Azure portal and select the search service.

  2. Na as configurações, abra o escala página para modificar partições e réplicas.In Settings, open the Scale page to modify replicas and partitions.

    Captura de tela a seguir mostra um serviço padrão provisionado com uma réplica e partição.The following screenshot shows a standard service provisioned with one replica and partition. A fórmula na parte inferior indica quantas unidades de pesquisa estão sendo usadas (1).The formula at the bottom indicates how many search units are being used (1). Se o preço unitário foi de US $100 (não um preço real), o custo mensal da execução deste serviço seria US $100 em média.If the unit price was $100 (not a real price), the monthly cost of running this service would be $100 on average.

    Página de escala, mostrando os valores atuaisScale page showing current values

  3. Use o controle deslizante para aumentar ou diminuir o número de partições.Use the slider to increase or decrease the number of partitions. A fórmula na parte inferior indica quantas unidades de pesquisa estão sendo usadas.The formula at the bottom indicates how many search units are being used.

    Este exemplo dobra a capacidade, com duas réplicas e partições, cada um.This example doubles capacity, with two replicas and partitions each. Observe o número de unidades de pesquisa; Agora é quatro porque a fórmula de cobrança é réplicas multiplicadas por partições (2 x 2).Notice the search unit count; it is now four because the billing formula is replicas multiplied by partitions (2 x 2). Mais de dobrar a capacidade de dobra o custo de execução do serviço.Doubling capacity more than doubles the cost of running the service. Se o custo de unidade de pesquisa foi de US $100, a fatura mensal novo agora será US $400.If the search unit cost was $100, the new monthly bill would now be $400.

    Atual por custos unitários de cada camada, visite o página de preços.For the current per unit costs of each tier, visit the Pricing page.

    Adicionar réplicas e partiçõesAdd replicas and partitions

  4. Clique em salvar para confirmar as alterações.Click Save to confirm the changes.

    Confirme as alterações de escala e de cobrançaConfirm changes to scale and billing

    Alterações na capacidade levar várias horas para ser concluída.Changes in capacity take several hours to complete. Você não pode cancelar depois que o processo foi iniciado e não há nenhum monitoramento em tempo real para ajustes de partição e réplica.You cannot cancel once the process has started and there is no real-time monitoring for replica and partition adjustments. No entanto, a seguinte mensagem permanece visível enquanto as alterações estão em andamento.However, the following message remains visible while changes are underway.

    Mensagem de status no portalStatus message in the portal

Observação

Após o provisionamento de um serviço, ele não pode ser atualizado para um SKU superior.After a service is provisioned, it cannot be upgraded to a higher SKU. Você precisará criar um serviço de pesquisa no novo tipo e recarregar os índices.You must create a search service at the new tier and reload your indexes. Confira Criar um serviço de Azure Search no portal para obter ajuda com o provisionamento do serviço.See Create an Azure Search service in the portal for help with service provisioning.

Combinações de partição e réplicaPartition and replica combinations

Um serviço Básico pode ter exatamente uma partição e até três réplicas, para o limite máximo de três SUs.A Basic service can have exactly one partition and up to three replicas, for a maximum limit of three SUs. O único recurso ajustável são as réplicas.The only adjustable resource is replicas. É necessário um mínimo de duas réplicas para alta disponibilidade em consultas.You need a minimum of two replicas for high availability on queries.

Standard e otimizados para armazenamento todos os serviços de pesquisa podem assumir as seguintes combinações de réplicas e partições, sujeito ao limite de 36 SUS.All Standard and Storage Optimized search services can assume the following combinations of replicas and partitions, subject to the 36-SU limit.

1 partição1 partition 2 partições2 partitions 3 partições3 partitions 4 partições4 partitions 6 partições6 partitions 12 partições12 partitions
1 réplica1 replica 1 SU1 SU 2 SU2 SU 3 SU3 SU 4 SU4 SU 6 SU6 SU 12 SU12 SU
2 réplicas2 replicas 2 SU2 SU 4 SU4 SU 6 SU6 SU 8 SU8 SU 12 SU12 SU 24 SU24 SU
3 réplicas3 replicas 3 SU3 SU 6 SU6 SU 9 SU9 SU 12 SU12 SU 18 SU18 SU 36 SU36 SU
4 réplicas4 replicas 4 SU4 SU 8 SU8 SU 12 SU12 SU 16 SU16 SU 24 SU24 SU N/DN/A
5 réplicas5 replicas 5 SU5 SU 10 SU10 SU 15 SU15 SU 20 SU20 SU 30 SU30 SU N/DN/A
6 réplicas6 replicas 6 SU6 SU 12 SU12 SU 18 SU18 SU 24 SU24 SU 36 SU36 SU N/DN/A
12 réplicas12 replicas 12 SU12 SU 24 SU24 SU 36 SU36 SU N/DN/A N/DN/A N/DN/A

SUs, preço e capacidade são explicados detalhadamente no site do Azure.SUs, pricing, and capacity are explained in detail on the Azure website. Para obter mais informações, consulte Detalhes de Preço.For more information, see Pricing Details.

Observação

O número de réplicas e partições divide de maneira uniforme em 12 (especificamente, 1, 2, 3, 4, 6 e 12).The number of replicas and partitions divides evenly into 12 (specifically, 1, 2, 3, 4, 6, 12). Isso ocorre porque o Azure Search divide previamente cada índice em 12 fragmentos, para que possam ser distribuídos em partes iguais entre todas as partições.This is because Azure Search pre-divides each index into 12 shards so that it can be spread in equal portions across all partitions. Por exemplo, se o serviço tiver três partições e você criar um índice, cada partição conterá quatro fragmentos do índice.For example, if your service has three partitions and you create an index, each partition will contain four shards of the index. A maneira como o Azure Search fragmenta um índice é um detalhe de implementação, sujeito a alterações em versões futuras.How Azure Search shards an index is an implementation detail, subject to change in future releases. Embora o número seja 12 hoje, você não deve esperar que ele seja sempre 12 no futuro.Although the number is 12 today, you shouldn't expect that number to always be 12 in the future.

Alta disponibilidadeHigh availability

Uma vez que é relativamente fácil e rápido escalar verticalmente, recomendamos começar com uma partição e uma ou duas réplicas e então escalar verticalmente conforme os volumes de consulta se acumulam.Because it's easy and relatively fast to scale up, we generally recommend that you start with one partition and one or two replicas, and then scale up as query volumes build. As cargas de trabalho de consulta são executadas principalmente em réplicas.Query workloads run primarily on replicas. Se precisar de mais taxa de transferência ou alta disponibilidade, provavelmente, você precisará de mais réplicas.If you need more throughput or high availability, you will probably require additional replicas.

Recomendações gerais para alta disponibilidade são:General recommendations for high availability are:

  • Duas réplicas para alta disponibilidade de cargas de trabalho somente leitura (consultas)Two replicas for high availability of read-only workloads (queries)
  • Três ou mais réplicas para alta disponibilidade de cargas de trabalho de leitura/gravação (consultas e indexação à medida que documentos individuais são adicionados, atualizados ou excluídos)Three or more replicas for high availability of read/write workloads (queries plus indexing as individual documents are added, updated, or deleted)

Os SLAs (contratos de nível de serviço) do Azure Search são direcionados a operações de consulta e a atualizações de índice formadas pela adição, atualização ou exclusão de documentos.Service level agreements (SLA) for Azure Search are targeted at query operations and at index updates that consist of adding, updating, or deleting documents.

Camada Básico alcança o topo em uma partição e três réplicas.Basic tier tops out at one partition and three replicas. Se você quiser flexibilidade para responder imediatamente a flutuações na demanda por taxa de transferência de indexação e consulta, considere uma das camadas Standard.If you want the flexibility to immediately respond to fluctuations in demand for both indexing and query throughput, consider one of the Standard tiers. Se você encontrar que os requisitos de armazenamento estão aumentando muito mais rapidamente que a taxa de transferência de consulta, considere uma das camadas de armazenamento otimizado.If you find your storage requirements are growing much more rapidly than your query throughput, consider one of the Storage Optimized tiers.

Disponibilidade de índice durante uma recompilaçãoIndex availability during a rebuild

A alta disponibilidade para o Azure Search pertence a consultas e atualizações de índice que não envolvem a recompilação de um índice.High availability for Azure Search pertains to queries and index updates that don't involve rebuilding an index. Se você excluir um campo, alterar um tipo de dados ou renomear um campo, será necessário recompilar o índice.If you delete a field, change a data type, or rename a field, you will need to rebuild the index. Para recompilar o índice, é necessário excluir o índice, recriar o índice e recarregar os dados.To rebuild the index, you must delete the index, re-create the index, and reload the data.

Observação

Você pode adicionar novos campos a um índice do Azure Search sem recompilar o índice.You can add new fields to an Azure Search index without rebuilding the index. O valor do novo campo será nulo para todos os documentos já existentes no índice.The value of the new field will be null for all documents already in the index.

Para manter a disponibilidade do índice durante uma recompilação, é necessário ter uma cópia do índice com um nome diferente no mesmo serviço, ou uma cópia do índice com o mesmo nome em um serviço diferente e fornecer a lógica de redirecionamento ou de failover no código.To maintain index availability during a rebuild, you must have a copy of the index with a different name on the same service, or a copy of the index with the same name on a different service, and then provide redirection or failover logic in your code.

Recuperação de desastreDisaster recovery

Atualmente, não há mecanismo integrado para recuperação de desastres.Currently, there is no built-in mechanism for disaster recovery. Adicionar partições ou réplicas seria a estratégia incorreta para atingir os objetivos de recuperação de desastres.Adding partitions or replicas would be the wrong strategy for meeting disaster recovery objectives. A abordagem mais comum é adicionar redundância no nível de serviço configurando um segundo serviço de pesquisa em outra região.The most common approach is to add redundancy at the service level by setting up a second search service in another region. Assim como acontece com a disponibilidade durante uma recompilação de índice, o redirecionamento ou a lógica de failover deve vir de seu código.As with availability during an index rebuild, the redirection or failover logic must come from your code.

Aumentar o desempenho de consulta com réplicasIncrease query performance with replicas

A latência da consulta é um indicador da necessidade de réplicas adicionais.Query latency is an indicator that additional replicas are needed. Em geral, uma primeira etapa para melhorar o desempenho de consulta é adicionar mais desse recurso.Generally, a first step toward improving query performance is to add more of this resource. Conforme você adiciona réplicas, cópias adicionais do índice são colocadas online para oferecer maior suporte a cargas de trabalho de consulta e balancear a carga das solicitações em várias réplicas.As you add replicas, additional copies of the index are brought online to support bigger query workloads and to load balance the requests over the multiple replicas.

Não podemos fornecer estimativas fixas para QPS (consultas por segundo): o desempenho da consulta depende da complexidade da consulta e de cargas de trabalho concorrentes.We cannot provide hard estimates on queries per second (QPS): query performance depends on the complexity of the query and competing workloads. Embora a adição de réplicas definitivamente adicione escala e desempenho, o resultado não é estritamente linear: a adição de três réplicas não garante o triplo da taxa de transferência.Although adding replicas clearly results in better performance, the result is not strictly linear: adding three replicas does not guarantee triple throughput.

Para obter orientação na estimativa QPS para suas cargas de trabalho, consulte considerações de desempenho e otimização de Azure Search.For guidance in estimating QPS for your workloads, see Azure Search performance and optimization considerations.

Aumentar o desempenho de indexação com partiçõesIncrease indexing performance with partitions

Aplicativos de pesquisa que exigem atualização de dados quase em tempo real precisarão proporcionalmente de mais partições de réplicas.Search applications that require near real-time data refresh will need proportionally more partitions than replicas. A adição de partições distribui as operações de leitura/gravação em uma quantidade maior de recursos de computação.Adding partitions spreads read/write operations across a larger number of compute resources. Também oferece mais espaço em disco para armazenar documentos e índices adicionais.It also gives you more disk space for storing additional indexes and documents.

Índices maiores levam mais tempo para consultar.Larger indexes take longer to query. Assim, você poderá perceber que cada aumento incremental em partições requer um aumento proporcional, mas menor, em réplicas.As such, you might find that every incremental increase in partitions requires a smaller but proportional increase in replicas. A complexidade de suas consultas e seu volume influenciarão a rapidez com que a execução da consulta é retornada.The complexity of your queries and query volume will factor into how quickly query execution is turned around.

Próximas etapasNext steps

Escolha um tipo de preço para o Azure SearchChoose a pricing tier for Azure Search