Estimar e gerenciar a capacidade de um serviço de Pesquisa Cognitiva do AzureEstimate and manage capacity of an Azure Cognitive Search service

Antes de provisionar um serviço de pesquisa e bloqueá-lo em um tipo de preço específico, reserve alguns minutos para entender como a capacidade funciona e como você pode ajustar réplicas e partições para acomodar a flutuação de carga de trabalho.Before provisioning a search service and locking in a specific pricing tier, take a few minutes to understand how capacity works and how you might adjust replicas and partitions to accommodate workload fluctuation.

A capacidade é uma função da camada de serviço, estabelecendo o armazenamento máximo por serviço, por partição e os limites máximos no número de objetos que você pode criar.Capacity is a function of the service tier, establishing maximum storage per service, per partition, and the maximum limits on the number of objects you can create. A camada básica foi projetada para aplicativos com requisitos de armazenamento modestos (apenas uma partição), mas com a capacidade de executar em uma configuração de alta disponibilidade (3 réplicas).The Basic tier is designed for apps having modest storage requirements (one partition only) but with the ability to run in a high availability configuration (3 replicas). Outras camadas são projetadas para cargas de trabalho ou padrões específicos, como multilocação.Other tiers are designed for specific workloads or patterns, such as multitenancy. Internamente, os serviços criados nessas camadas se beneficiam do hardware que ajuda esses cenários.Internally, services created on those tiers benefit from hardware that helps those scenarios.

A arquitetura de escalabilidade no Azure Pesquisa Cognitiva baseia-se em combinações flexíveis de réplicas e partições para que você possa variar a capacidade dependendo se precisa de mais poder de consulta ou de indexação.The scalability architecture in Azure Cognitive Search is based on flexible combinations of replicas and partitions so that you can vary capacity depending on whether you need more query or indexing power. Depois que um serviço é criado, você pode aumentar ou diminuir o número de réplicas ou partições de forma independente.Once a service is created, you can increase or decrease the number of replicas or partitions independently. Os custos aumentarão com cada recurso físico adicional, mas assim que grandes cargas de trabalho forem concluídas, você poderá reduzir a escala para reduzir sua fatura.Costs will go up with each additional physical resource, but once large workloads are finished, you can reduce scale to lower your bill. Dependendo da camada e do tamanho do ajuste, adicionar ou reduzir a capacidade pode levar de 15 minutos a várias horas.Depending on the tier and the size of the adjustment, adding or reducing capacity can take anywhere from 15 minutes to several hours.

Ao modificar a alocação de réplicas e partições, é recomendável usar o portal do Azure.When modifying the allocation of replicas and partitions, we recommend using the Azure portal. O portal impõe limites para combinações permitidas que ficam abaixo dos limites máximos de uma camada.The portal enforces limits on allowable combinations that stay below maximum limits of a tier. No entanto, se você precisar de uma abordagem de provisionamento baseada em script ou em código, o Azure PowerShell ou a API REST de gerenciamento são soluções alternativas.However, if you require a script-based or code-based provisioning approach, the Azure PowerShell or the Management REST API are alternative solutions.

Conceitos: unidades de pesquisa, réplicas, partições, fragmentosConcepts: search units, replicas, partitions, shards

A capacidade é expressa em unidades de pesquisa que podem ser alocadas em combinações de partições e réplicas, usando um mecanismo de fragmentação subjacente para dar suporte a configurações flexíveis:Capacity is expressed in search units that can be allocated in combinations of partitions and replicas, using an underlying sharding mechanism to support flexible configurations:

ConceitoConcept DefiniçãoDefinition
Unidade de pesquisaSearch unit Um único incremento da capacidade total disponível (36 unidades).A single increment of total available capacity (36 units). Também é a unidade de cobrança para um serviço de Pesquisa Cognitiva do Azure.It is also the billing unit for an Azure Cognitive Search service. É necessário um mínimo de uma unidade para executar o serviço.A minimum of one unit is required to run the service.
RéplicaReplica 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 hospeda uma cópia de um índice.Each replica hosts one copy of an index. Se você alocar três réplicas, terá três cópias de um índice disponível para atender às solicitações de consulta.If you allocate three replicas, you'll have three copies of an index available for servicing query requests.
PartiçãoPartition Armazenamento físico e e/s para operações de leitura/gravação (por exemplo, ao recompilar ou atualizar um índice).Physical storage and I/O for read/write operations (for example, when rebuilding or refreshing an index). Cada partição tem uma fatia do índice total.Each partition has a slice of the total index. Se você alocar três partições, o índice será dividido em terços.If you allocate three partitions, your index is divided into thirds.
FragmentosShard Um bloco de um índice.A chunk of an index. O Azure Pesquisa Cognitiva divide cada índice em fragmentos para tornar o processo de adição de partições mais rápido (movendo fragmentos para novas unidades de pesquisa).Azure Cognitive Search divides each index into shards to make the process of adding partitions faster (by moving shards to new search units).

O diagrama a seguir mostra a relação entre réplicas, partições, fragmentos e unidades de pesquisa.The following diagram shows the relationship between replicas, partitions, shards, and search units. Ele mostra um exemplo de como um único índice é estendido em quatro unidades de pesquisa em um serviço com duas réplicas e duas partições.It shows an example of how a single index is spanned across four search units in a service with two replicas and two partitions. Cada uma das quatro unidades de pesquisa armazena apenas metade dos fragmentos do índice.Each of the four search units stores only half of the shards of the index. As unidades de pesquisa na coluna esquerda armazenam a primeira metade dos fragmentos, que compõem a primeira partição, enquanto aquelas na coluna direita armazenam a segunda metade dos fragmentos, que compõem a segunda partição.The search units in the left column store the first half of the shards, comprising the first partition, while those in the right column store the second half of the shards, comprising the second partition. Como há duas réplicas, há duas cópias de cada fragmento de índice.Since there are two replicas, there are two copies of each index shard. As unidades de pesquisa na linha superior armazenam uma cópia, que inclui a primeira réplica, enquanto aquelas na linha inferior armazenam outra cópia, compostando a segunda réplica.The search units in the top row store one copy, comprising the first replica, while those in the bottom row store another copy, comprising the second replica.

Os índices de pesquisa são fragmentados entre partições.

O diagrama acima é apenas um exemplo.The diagram above is only one example. Muitas combinações de partições e réplicas são possíveis, até um máximo de 36 unidades de pesquisa de total.Many combinations of partitions and replicas are possible, up to a maximum of 36 total search units.

No Pesquisa Cognitiva, o gerenciamento de fragmentos é um detalhe de implementação e não configurável, mas saber que um índice é fragmentado ajuda a entender as anomalias ocasionais em classificação e comportamentos de preenchimento automático:In Cognitive Search, shard management is an implementation detail and non-configurable, but knowing that an index is sharded helps to understand the occasional anomalies in ranking and autocomplete behaviors:

  • A classificação de anomalias: as pontuações de pesquisa são calculadas primeiro no nível do fragmento e, em seguida, agregadas em um único conjunto de resultados.Ranking anomalies: Search scores are computed at the shard level first, and then aggregated up into a single result set. Dependendo das características do conteúdo do fragmento, as correspondências de um fragmento podem ter uma classificação maior do que as correspondências em outra.Depending on the characteristics of shard content, matches from one shard might be ranked higher than matches in another one. Se você observar classificações intuitivas de contador nos resultados da pesquisa, provavelmente ocorrerá devido aos efeitos da fragmentação, especialmente se os índices forem pequenos.If you notice counter intuitive rankings in search results, it is most likely due to the effects of sharding, especially if indexes are small. Você pode evitar essas anomalias de classificação escolhendo calcular pontuações globalmente em todo o índice, mas isso incorrerá em uma penalidade de desempenho.You can avoid these ranking anomalies by choosing to compute scores globally across the entire index, but doing so will incur a performance penalty.

  • Anomalias de preenchimento automático: consultas de preenchimento automático, em que as correspondências são feitas nos primeiros vários caracteres de um termo parcialmente inserido, aceitam um parâmetro difuso que Forgives pequenos desvios na grafia.Autocomplete anomalies: Autocomplete queries, where matches are made on the first several characters of a partially entered term, accept a fuzzy parameter that forgives small deviations in spelling. Para preenchimento automático, a correspondência difusa é restrita a termos dentro do fragmento atual.For autocomplete, fuzzy matching is constrained to terms within the current shard. Por exemplo, se um fragmento contiver "Microsoft" e um termo parcial de "Micor" for inserido, o mecanismo de pesquisa corresponderá em "Microsoft" nesse fragmento, mas não em outros fragmentos que contenham as partes restantes do índice.For example, if a shard contains "Microsoft" and a partial term of "micor" is entered, the search engine will match on "Microsoft" in that shard, but not in other shards that hold the remaining parts of the index.

Como avaliar os requisitos de capacidadeHow to evaluate capacity requirements

A capacidade e os custos de executar o serviço são disponibilizados em mãos.Capacity and the costs of running the service go hand in hand. As camadas impõem limites em dois níveis: armazenamento e conteúdo (uma contagem de índices em um serviço, por exemplo).Tiers impose limits on two levels: storage and content (a count of indexes on a service, for example). É importante considerar ambos porque o limite que você atingir primeiro é o limite efetivo.It's important to consider both because whichever limit you reach first is the effective limit.

Quantidades de índices e outros objetos geralmente são ditados por requisitos de negócios e de engenharia.Quantities of indexes and other objects are typically dictated by business and engineering requirements. Por exemplo, você pode ter várias versões do mesmo índice para desenvolvimento, teste e produção ativos.For example, you might have multiple versions of the same index for active development, testing, and production.

As necessidades de armazenamento são determinadas pelo tamanho dos índices que você espera criar.Storage needs are determined by the size of the indexes you expect to build. Não há heurística sólida ou Generalidades que ajudam com estimativas.There are no solid heuristics or generalities that help with estimates. A única maneira de determinar o tamanho de um índice é Build One.The only way to determine the size of an index is build one. Seu tamanho será baseado em dados importados, na análise de texto e na configuração de índice, como se você habilitar sugestores, filtragem e classificação.Its size will be based on imported data, text analysis, and index configuration such as whether you enable suggesters, filtering, and sorting.

Para pesquisa de texto completo, a estrutura de dados primária é uma estrutura de índice invertida , que tem características diferentes dos dados de origem.For full text search, the primary data structure is an inverted index structure, which has different characteristics than source data. Para um índice invertido, o tamanho e a complexidade são determinados pelo conteúdo, não necessariamente pela quantidade de dados que você feedu nele.For an inverted index, size and complexity are determined by content, not necessarily by the amount of data that you feed into it. Uma fonte de dados grande com alta redundância pode resultar em um índice menor do que um conjunto de dado menor que contém conteúdo altamente variável.A large data source with high redundancy could result in a smaller index than a smaller dataset that contains highly variable content. Portanto, raramente é possível inferir o tamanho do índice com base no tamanho do conjunto de datas original.So it's rarely possible to infer index size based on the size of the original dataset.

Observação

Mesmo que a estimativa de necessidades futuras de índices e armazenamento possa parecer uma tarefa de adivinhação, vale a pena fazer isso.Even though estimating future needs for indexes and storage can feel like guesswork, it's worth doing. Se a capacidade de uma camada for muito baixa, você precisará provisionar um novo serviço em uma camada mais alta e, em seguida, recarregar os índices.If a tier's capacity turns out to be too low, you'll need to provision a new service at a higher tier and then reload your indexes. Não há nenhuma atualização in-loco de um serviço de uma camada para outra.There's no in-place upgrade of a service from one tier to another.

Estimar com a camada gratuitaEstimate with the Free tier

Uma abordagem para calcular a capacidade é iniciar com a camada Livre.One approach for estimating capacity is to start with the Free tier. Lembre-se de que o serviço gratuito oferece até três índices, 50 MB de armazenamento e 2 minutos de tempo de indexação.Remember that the Free service offers up to three indexes, 50 MB of storage, and 2 minutes of indexing time. Pode ser desafiador estimar um tamanho de índice projetado com essas restrições, mas estas são as etapas:It can be challenging to estimate a projected index size with these constraints, but these are the steps:

  • Crie um serviço gratuito.Create a free service.

  • Prepare um DataSet pequeno e representativo.Prepare a small, representative dataset.

  • Crie um índice e carregue seus dados.Create an index and load your data. Se o conjunto de dados puder ser hospedado em uma fonte de dado do Azure com suporte de indexadores, você poderá usar o Assistente de importação de dados no portal para criar e carregar o índice.If the dataset can be hosted in an Azure data source supported by indexers, you can use the Import data wizard in the portal to both create and load the index. Caso contrário, você deve usar REST e postmaster ou Visual Studio Code para criar o índice e enviar os dados por push.Otherwise, you should use REST and Postman or Visual Studio Code to create the index and push the data. O modelo de push requer que os dados estejam na forma de documentos JSON, em que os campos no documento correspondem aos campos no índice.The push model requires data to be in the form of JSON documents, where fields in the document correspond to fields in the index.

  • Coletar informações sobre o índice, como tamanho.Collect information about the index, such as size. Os recursos e atributos têm um impacto no armazenamento.Features and attributes have an impact on storage. Por exemplo, a adição de sugestores (consultas de pesquisa conforme o tipo) aumentará os requisitos de armazenamento.For example, adding suggesters (search-as-you-type queries) will increase storage requirements.

    Usando o mesmo conjunto de dados, você pode tentar criar várias versões de um índice, com atributos diferentes em cada campo, para ver como os requisitos de armazenamento variam.Using the same data set, you might try creating multiple versions of an index, with different attributes on each field, to see how storage requirements vary. Para obter mais informações, consulte "implicações de armazenamento" em criar um índice básico.For more information, see "Storage implications" in Create a basic index.

Com uma estimativa aproximada em mãos, você pode dobrar esse valor para o orçamento de dois índices (desenvolvimento e produção) e, em seguida, escolher a camada adequadamente.With a rough estimate in hand, you might double that amount to budget for two indexes (development and production) and then choose your tier accordingly.

Estimar com uma camada FaturávelEstimate with a billable tier

Os recursos dedicados podem acomodar grandes períodos de amostragem e processamento para estimativas mais realistas de quantidade de índice, tamanho e volumes de consulta durante o desenvolvimento.Dedicated resources can accommodate larger sampling and processing times for more realistic estimates of index quantity, size, and query volumes during development. Alguns clientes saltam diretamente com uma camada Faturável e, em seguida, reavaliam à medida que o projeto de desenvolvimento amadurece.Some customers jump right in with a billable tier and then re-evaluate as the development project matures.

  1. Examine os limites de serviço em cada camada para determinar se as camadas inferiores podem dar suporte ao número de índices de que você precisa.Review service limits at each tier to determine whether lower tiers can support the number of indexes you need. Nas camadas básica, S1 e S2, os limites de índice são 15, 50 e 200, respectivamente.Across the Basic, S1, and S2 tiers, index limits are 15, 50, and 200, respectively. A camada de armazenamento otimizado tem um limite de 10 índices porque ele foi projetado para dar suporte a um número baixo de índices muito grandes.The Storage Optimized tier has a limit of 10 indexes because it's designed to support a low number of very large indexes.

  2. Criar um serviço em uma camada faturável:Create a service at a billable tier:

    • Comece de baixo, em básico ou S1, se você não tiver certeza sobre a carga projetada.Start low, at Basic or S1, if you're not sure about the projected load.
    • Comece de alta, em S2 ou mesmo S3, se o teste incluir a indexação em larga escala e cargas de consulta.Start high, at S2 or even S3, if testing includes large-scale indexing and query loads.
    • Comece com o armazenamento otimizado, em L1 ou L2, se você estiver indexando uma grande quantidade de dados e a carga de consulta for relativamente baixa, assim como com um aplicativo de negócios interno.Start with Storage Optimized, at L1 or L2, if you're indexing a large amount of data and query load is relatively low, as with an internal business application.
  3. Criar um índice inicial para determinar como a fonte de dados traduz para um índice.Build an initial index to determine how source data translates to an index. Essa é a única maneira de estimar o tamanho do índice.This is the only way to estimate index size.

  4. Monitorar armazenamento, limites de serviço, volume de consulta e latência no portal.Monitor storage, service limits, query volume, and latency in the portal. O portal mostra as consultas por segundo, as consultas limitadas e a latência de pesquisa.The portal shows you queries per second, throttled queries, and search latency. Todos esses valores podem ajudá-lo a decidir se selecionou a camada certa.All of these values can help you decide if you selected the right tier.

  5. Adicione réplicas se você precisar de alta disponibilidade ou se tiver um desempenho de consulta lento.Add replicas if you need high availability or if you experience slow query performance.

    Não há diretrizes sobre quantas réplicas são necessárias para acomodar cargas de consulta.There are no guidelines on how many replicas are needed to accommodate query loads. O desempenho da consulta depende da complexidade da consulta e das cargas de trabalho concorrentes.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 sobre como estimar o QPS para sua solução, consulte escala para desempenhoe consultas de monitor.For guidance in estimating QPS for your solution, see Scale for performanceand Monitor queries.

Observação

Os requisitos de armazenamento podem ser informados se você incluir dados que nunca serão pesquisados.Storage requirements can be inflated if you include data that will never be searched. O ideal é que os documentos contenham apenas os dados de que você precisa para a experiência de pesquisa.Ideally, documents contain only the data that you need for the search experience. Os dados binários não são pesquisáveis e devem ser armazenados separadamente (talvez em um armazenamento de BLOBs ou de tabelas do Azure).Binary data isn't searchable and should be stored separately (maybe in an Azure table or blob storage). Em seguida, um campo deve ser adicionado no índice para manter uma referência de URL aos dados externos.A field should then be added in the index to hold a URL reference to the external data. O tamanho máximo de um documento de pesquisa individual é 16 MB (ou menos se você estiver carregando vários documentos em massa em uma solicitação).The maximum size of an individual search document is 16 MB (or less if you're bulk uploading multiple documents in one request). Para obter mais informações, consulte limites de serviço no Azure pesquisa cognitiva.For more information, see Service limits in Azure Cognitive Search.

Considerações sobre volume de consultasQuery volume considerations

Consultas por segundo (QPS) é uma métrica importante durante o ajuste de desempenho, mas geralmente é apenas uma consideração de camada se você espera um alto volume de consulta no início.Queries per second (QPS) is an important metric during performance tuning, but it's generally only a tier consideration if you expect high query volume at the outset.

As camadas padrão podem fornecer um equilíbrio entre réplicas e partições.The Standard tiers can provide a balance of replicas and partitions. Você pode aumentar o retorno da consulta adicionando réplicas para balanceamento de carga ou adicionar partições para processamento paralelo.You can increase query turnaround by adding replicas for load balancing or add partitions for parallel processing. Em seguida, você pode ajustar o desempenho depois que o serviço for provisionado.You can then tune for performance after the service is provisioned.

Se você espera grandes volumes de consulta sustentados desde o início, considere as camadas mais altas Standard, apoiadas por hardware mais potente.If you expect high sustained query volumes from the outset, you should consider higher Standard tiers, backed by more powerful hardware. Você pode pegar partições e réplicas offline ou até mesmo alternar para um serviço de camada inferior, se esses volumes de consulta não ocorrerem.You can then take partitions and replicas offline, or even switch to a lower-tier service, if those query volumes don't occur. Para obter mais informações sobre como calcular a taxa de transferência de consulta, consulte desempenho e otimização do Azure pesquisa cognitiva.For more information on how to calculate query throughput, see Azure Cognitive Search performance and optimization.

As camadas de armazenamento otimizadas são úteis para cargas de trabalho de dados grandes, dando suporte a armazenamento de índice mais geral disponível para quando os requisitos de latência de consulta são menos importantes.The Storage Optimized tiers are useful for large data workloads, supporting more overall available index storage for when query latency requirements are less important. Você ainda deve usar réplicas adicionais para balanceamento de carga e partições adicionais para processamento paralelo.You should still use additional replicas for load balancing and additional partitions for parallel processing. Em seguida, você pode ajustar o desempenho depois que o serviço for provisionado.You can then tune for performance after the service is provisioned.

Contratos de nível de serviçoService-level agreements

Os recursos de camada gratuita e visualização não fornecem contratos de nível de serviço (SLAs).The Free tier and preview features don't provide service-level agreements (SLAs). Para todas as camadas faturáveis, os SLAs entram em vigor quando você provisiona redundância suficiente para o serviço.For all billable tiers, SLAs take effect when you provision sufficient redundancy for your service. Você precisa ter duas ou mais réplicas para SLAs de consulta (leitura).You need to have two or more replicas for query (read) SLAs. Você precisa ter três ou mais réplicas para os SLAs de consulta e indexação (leitura/gravação).You need to have three or more replicas for query and indexing (read-write) SLAs. O número de partições não afeta os SLAs.The number of partitions doesn't affect SLAs.

Dicas para planejamento de capacidadeTips for capacity planning

  • Permitir que as métricas sejam compiladas em consultas e coletar dados sobre padrões de uso (consultas durante o horário comercial, indexação fora do horário de pico).Allow metrics to build around queries, and collect data around usage patterns (queries during business hours, indexing during off-peak hours). Use esses dados para informar as decisões de provisionamento do serviço.Use this data to inform service provisioning decisions. Embora não seja prático em uma cadência de hora ou diária, você pode ajustar dinamicamente as partições e os recursos para acomodar as alterações planejadas nos volumes de consulta.Though it's not practical at an hourly or daily cadence, you can dynamically adjust partitions and resources to accommodate planned changes in query volumes. Você também pode acomodar alterações não planejadas, mas sustentadas, se os níveis tiverem tempo suficiente para garantir a tomada de ações.You can also accommodate unplanned but sustained changes if levels hold long enough to warrant taking action.

  • Lembre-se de que a única desvantagem do no provisionamento é que você pode precisar subdividir um serviço se os requisitos reais forem maiores do que suas previsões.Remember that the only downside of under provisioning is that you might have to tear down a service if actual requirements are greater than your predictions. Para evitar a interrupção do serviço, você deve criar um novo serviço em uma camada superior e executá-lo lado a lado até que todos os aplicativos e solicitações tenham como destino o novo ponto de extremidade.To avoid service disruption, you would create a new service at a higher tier and run it side by side until all apps and requests target the new endpoint.

Quando adicionar partições e réplicasWhen to add partitions and replicas

Inicialmente, um serviço é alocado um nível mínimo de recursos que consistem em uma partição e uma réplica.Initially, a service is allocated a minimal level of resources consisting of one partition and one replica.

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). Nenhuma carga de trabalho é executada em segundo plano.Neither workload runs in the background. Você pode agendar a indexação para tempos em que as solicitações de consulta são naturalmente menos frequentes, mas o serviço não priorizará uma tarefa em vez de outra.You can schedule indexing for times when query requests are naturally less frequent, but the service will not otherwise prioritize one task over another. Além disso, uma certa quantidade de redundância simplifica o desempenho da consulta quando os serviços ou nós são atualizados internamente.Additionally, a certain amount of redundancy smooths out query performance when services or nodes are updated internally.

Como regra geral, os aplicativos de pesquisa tendem a precisar de mais réplicas do que as partições, especialmente quando as operações de serviço são tendenciosas em relação a cargas de trabalho de consulta.As a general rule, search applications tend to 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.

A camada escolhida determina o tamanho e a velocidade da partição, e cada camada é otimizada em um conjunto de características que se ajustam a vários cenários.The tier you choose determines partition size and speed, and each tier is optimized around a set of characteristics that fit various scenarios. Se você escolher uma camada de extremidade superior, poderá precisar de menos partições do que se você estiver com S1.If you choose a higher-end tier, you might need fewer partitions than if you go with S1. Uma das perguntas que você precisará responder por meio de testes autodirecionados é se uma partição maior e mais cara produz um desempenho melhor do que duas partições mais baratas em um serviço provisionado em uma camada mais baixa.One of the questions you'll need to answer through self-directed testing is whether a larger and more expensive partition yields better performance than two cheaper partitions on a service provisioned at a lower tier.

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.

Observação

Adicionar mais réplicas ou partições aumenta o custo da execução do serviço e pode introduzir pequenas variações de como os resultados são ordenados.Adding more replicas or partitions increases the cost of running the service, and can introduce slight variations in how results are ordered. Certifique-se de verificar a calculadora de preços para entender as implicações de cobrança da adição de mais nós.Be sure to check the pricing calculator to understand the billing implications of adding more nodes. O gráfico abaixo pode ajudá-lo a fazer referência cruzada do número de unidades de pesquisa necessárias para uma configuração específica.The chart below can help you cross-reference the number of search units required for a specific configuration. Para obter mais informações sobre como as réplicas adicionais afetam o processamento da consulta, consulte Ordering Results.For more information on how additional replicas impact query processing, see Ordering results.

Como alocar réplicas e partiçõesHow to allocate replicas and partitions

  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. Em configurações, abra a página escala para modificar réplicas e partições.Under Settings, open the Scale page to modify replicas and partitions.

    A captura de tela a seguir mostra um padrão básico provisionado com uma réplica e partição.The following screenshot shows a Basic Standard 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 era $100 (não um preço real), o custo mensal da execução desse serviço seria de $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 escala mostrando os valores atuais

  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. Selecione Salvar.Select Save.

    Este exemplo adiciona uma segunda réplica e partição.This example adds a second replica and partition. Observe a contagem de unidades de pesquisa; Agora, ele é quatro porque a fórmula de cobrança é réplicas multiplicada 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). Dobrar a capacidade mais do que o dobro do custo da execução do serviço.Doubling capacity more than doubles the cost of running the service. Se o custo da unidade de pesquisa fosse $100, a nova fatura mensal agora será $400.If the search unit cost was $100, the new monthly bill would now be $400.

    Para os custos por unidade atuais de cada camada, visite a página de preços.For the current per unit costs of each tier, visit the Pricing page.

    Adicionar réplicas e partições

  4. Depois de salvar, você pode verificar as notificações para confirmar se a ação foi bem-sucedida.After saving, you can check notifications to confirm the action succeeded.

    Salvar alterações

    As alterações na capacidade podem levar até várias horas para serem concluídas.Changes in capacity can take up to several hours to complete. Não é possível cancelar quando o processo foi iniciado e não há monitoramento em tempo real para os ajustes de réplica e partição.You cannot cancel once the process has started and there is no real-time monitoring for replica and partition adjustments. No entanto, a mensagem a seguir 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 portal

Observação

Depois que um serviço é provisionado, ele não pode ser atualizado para uma camada superior.After a service is provisioned, it cannot be upgraded to a higher tier. 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. Consulte criar um serviço de pesquisa cognitiva do Azure no portal para obter ajuda com o provisionamento de serviço.See Create an Azure Cognitive Search service in the portal for help with service provisioning.

Além disso, partições e réplicas são gerenciadas exclusivamente e internamente pelo serviço.Additionally, partitions and replicas are managed exclusively and internally by the service. Não há nenhum conceito de afinidade de processador ou atribuição de uma carga de trabalho a um nó específico.There is no concept of processor affinity, or assigning a workload to a specific node.

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.

Todos os serviços de pesquisa padrão e de armazenamento otimizados podem assumir as combinações de réplicas e partições a seguir, sujeitas ao limite de 36-SU permitido para essas camadas.All Standard and Storage Optimized search services can assume the following combinations of replicas and partitions, subject to the 36-SU limit allowed for these tiers.

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ços.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 Pesquisa Cognitiva divide cada índice em 12 fragmentos para que ele possa ser distribuído em partes iguais em todas as partições.This is because Azure Cognitive 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. Como o Azure Pesquisa Cognitiva fragmenta um índice é um detalhe de implementação, sujeito a alterações em versões futuras.How Azure Cognitive 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 contratos de nível de serviço (SLA) para o Azure Pesquisa Cognitiva são direcionados em operações de consulta e em atualizações de índice que consistem em Adicionar, atualizar ou excluir documentos.Service level agreements (SLA) for Azure Cognitive 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ê achar que seus requisitos de armazenamento estão crescendo muito mais rapidamente do 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.

Sobre consultas por segundo (QPS)About queries per second (QPS)

Devido ao grande número de fatores que entram no desempenho da consulta, a Microsoft não publica números esperados de QPS.Due to the large number of factors that go into query performance, Microsoft doesn't publish expected QPS numbers. As estimativas de QPS devem ser desenvolvidas de forma independente por cada cliente usando a camada de serviço, a configuração, o índice e as construções de consulta que são válidas para seu aplicativo.QPS estimates must be developed independently by every customer using the service tier, configuration, index, and query constructs that are valid for your application. Tamanho do índice e complexidade, o tamanho da consulta e complexidade e a quantidade de tráfego são determinantes principais de QPS.Index size and complexity, query size and complexity, and the amount of traffic are primary determinants of QPS. Não é possível oferecer estimativas significativas quando esses fatores são desconhecidos.There is no way to offer meaningful estimates when such factors are unknown.

As previsões são mais previsíveis quando calculada em serviços em execução em recursos dedicados (camadas Básico e Standard).Estimates are more predictable when calculated on services running on dedicated resources (Basic and Standard tiers). No nível padrão, é possível estimar melhor o QPS, porque você tem controle sobre mais parâmetros.You can estimate QPS more closely because you have control over more of the parameters. Para obter orientação sobre como a estimativa da abordagem, consulte Desempenho e otimização do Azure Cognitive Search.For guidance on how to approach estimation, see Azure Cognitive Search performance and optimization.

Para as camadas de Otimizado para armazenamento (L1 e L2), você deve esperar uma taxa de transferência de consulta inferior e uma latência mais alta do que as camadas Standard.For the Storage Optimized tiers (L1 and L2), you should expect a lower query throughput and higher latency than the Standard tiers.

Próximas etapasNext steps