Allocare partizioni e repliche per i carichi di lavoro di query e indicizzazione in Ricerca di AzureAllocate partitions and replicas for query and indexing workloads in Azure Search

Dopo aver scelto un piano tariffario ed eseguito il provisioning di un servizio di ricerca, il passaggio successivo consente di aumentare il numero di repliche o partizioni usate dal servizio.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. Ogni livello offre un numero fisso di unità di fatturazione.Each tier offers a fixed number of billing units. Questo articolo illustra come assegnare le unità per ottenere una configurazione ottimale che bilanci i requisiti per l'esecuzione di query, indicizzazione e archiviazione.This article explains how to allocate those units to achieve an optimal configuration that balances your requirements for query execution, indexing, and storage.

La configurazione delle risorse è disponibile se si imposta un servizio al livello Basic o a uno dei livelli Standard.Resource configuration is available when you set up a service at the Basic tier or one of the Standard tiers. Per tutti i servizi di questi livelli è possibile acquistare capacità a incrementi di unità di ricerca (SU). Le singole partizioni e repliche vengono considerate come una unità di ricerca.For services at these tiers, capacity is purchased in increments of search units (SUs) where each partition and replica counts as one SU.

Usando un numero minore di risultati SU in una fattura proporzionalmente inferiore.Using fewer SUs results in a proportionally lower bill. La fatturazione è attiva per l'intera durata impostata per il servizio.Billing is in effect for as long as the service is set up. Se temporaneamente non si usa un servizio, l'unico modo per evitare la fatturazione è eliminare il servizio e quindi ricrearlo quando sarà necessario.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.

Nota

Eliminando un servizio si elimina tutto il suo contenuto.Deleting a service deletes everything on it. Non sono disponibili funzionalità all'interno di Ricerca di Azure per eseguire il backup e il ripristino dei dati di ricerca permanenti.There is no facility within Azure Search for backing up and restoring persisted search data. Per ridistribuire un indice esistente in un nuovo servizio è necessario eseguire il programma utilizzato in origine per crearlo e caricarlo.To redeploy an existing index on a new service, you should run the program used to create and load it originally.

Terminologia: partizioni e replicheTerminology: partitions and replicas

Partizioni e repliche sono le risorse primarie alla base di un servizio di ricerca.Partitions and replicas are the primary resources that back a search service.

RisorsaResource DefinizioneDefinition
PartizioniPartitions Offre l'archiviazione degli indici e l'I/O per le operazioni di lettura e scrittura, ad esempio durante la compilazione o l'aggiornamento di un indice.Provides index storage and I/O for read/write operations (for example, when rebuilding or refreshing an index).
ReplicheReplicas Istanze del servizio di ricerca, utilizzate principalmente per il bilanciamento di carico delle operazioni di query.Instances of the search service, used primarily to load balance query operations. Ogni replica ospita sempre una copia di un indice.Each replica always hosts one copy of an index. Se si dispone di 12 repliche, si disporrà di 12 copie di ogni indice caricate nel servizio.If you have 12 replicas, you will have 12 copies of every index loaded on the service.

Nota

Non è possibile manipolare o scegliere direttamente quali indici devono essere eseguiti su una replica.There is no way to directly manipulate or manage which indexes run on a replica. L'architettura del servizio include una copia di ogni indice in ogni replica.One copy of each index on every replica is part of the service architecture.

Modalità di allocazione di partizioni e replicheHow to allocate partitions and replicas

In Ricerca di Azure viene allocato inizialmente a un servizio un livello minimo di risorse costituito da una partizione e una replica.In Azure Search, a service is initially allocated a minimal level of resources consisting of one partition and one replica. Per i livelli che lo supportano, è possibile regolare in modo incrementale le risorse di elaborazione aumentando le partizioni se si ha bisogno di maggiore spazio di archiviazione e I/O o aggiungendo più repliche per volumi di query maggiori o migliori prestazioni.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. Un singolo servizio deve disporre di risorse sufficienti per gestire tutti i carichi di lavoro (indicizzazione e query).A single service must have sufficient resources to handle all workloads (indexing and queries). Non è possibile suddividere i carichi di lavoro tra più servizi.You cannot subdivide workloads among multiple services.

Per aumentare o modificare l'allocazione delle repliche e delle partizioni, è consigliabile usare il portale di Azure.To increase or change the allocation of replicas and partitions, we recommend using the Azure portal. Il portale applica limiti alle combinazioni consentite inferiori ai limiti massimi:The portal enforces limits on allowable combinations that stay below maximum limits:

  1. Accedere al portale di Azure e selezionare il servizio di ricerca.Sign in to the Azure portal and select the search service.
  2. In Impostazioni aprire il pannello Piano e usare i dispositivi di scorrimento per aumentare o ridurre il numero di partizioni e repliche.In Settings, open the Scale blade and use the sliders to increase or decrease the number of partitions and replicas.

Se è necessario un approccio di provisioning basato script o su codice, invece del portale è possibile usare l'API REST di gestione.If you require a script-based or code-based provisioning approach, the Management REST API is an alternative to the portal.

In generale le applicazioni di ricerca richiedono più repliche che partizioni, in particolare quando fra le operazioni del servizio prevalgono i carichi di lavoro di query.Generally, search applications need more replicas than partitions, particularly when the service operations are biased toward query workloads. La sezione relativa alla disponibilità elevata spiega perché.The section on high availability explains why.

Nota

Dopo aver effettuato il provisioning di un servizio, non è possibile aggiornarlo passando a uno SKU superiore.After a service is provisioned, it cannot be upgraded to a higher SKU. È necessario creare un servizio di ricerca a un nuovo livello e ricaricare gli indici.You must create a search service at the new tier and reload your indexes. Per assistenza sul provisioning del servizio, vedere Creare un servizio Ricerca di Azure nel portale .See Create an Azure Search service in the portal for help with service provisioning.

Disponibilità elevataHigh availability

Poiché è facile e relativamente veloce eseguire la scalabilità verticale, è consigliabile in genere iniziare con una partizione e una o due repliche e quindi eseguire la scalabilità verticale come vengono compilati i volumi di query.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. I carichi di lavoro di query vengono eseguiti principalmente nelle repliche.Query workloads run primarily on replicas. Se è necessaria maggiore velocità effettiva o una disponibilità elevata, probabilmente saranno necessarie repliche aggiuntive.If you need more throughput or high availability, you will probably require additional replicas.

Le indicazioni generali per la disponibilità elevata sono:General recommendations for high availability are:

  • Due repliche per la disponibilità elevata di carichi di lavoro di sola lettura, vale a dire query.Two replicas for high availability of read-only workloads (queries)
  • Tre o più repliche per la disponibilità elevata dei carichi di lavoro di lettura e scrittura, vale a dire query e indicizzazione man mano che singoli documenti vengono aggiunti, aggiornati o eliminati.Three or more replicas for high availability of read/write workloads (queries plus indexing as individual documents are added, updated, or deleted)

I contratti di servizio per Ricerca di Azure sono associati a operazioni di query e aggiornamenti di indici che consistono nell'aggiunta, l'aggiornamento o l'eliminazione di documenti.Service level agreements (SLA) for Azure Search are targeted at query operations and at index updates that consist of adding, updating, or deleting documents.

Il livello Basic prevede una partizione e fino a tre repliche.Basic tier tops out at one partition and three replicas. Se si vuole avere la flessibilità necessaria per rispondere immediatamente alle fluttuazioni della richiesta di indicizzazione e velocità effettiva di query, prendere in considerazione uno dei piani 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.

Disponibilità degli indici durante la ricompilazioneIndex availability during a rebuild

La disponibilità elevata per Ricerca di Azure riguarda gli aggiornamenti di query e indici che non comportano la ricompilazione di un indice.High availability for Azure Search pertains to queries and index updates that don't involve rebuilding an index. Se si elimina o si rinomina un campo oppure si modifica il tipo di dati, sarà necessario ricompilare l'indice.If you delete a field, change a data type, or rename a field, you will need to rebuild the index. A tale scopo, è necessario eliminare l'indice, ricrearlo e ricaricare i dati.To rebuild the index, you must delete the index, re-create the index, and reload the data.

Nota

È possibile aggiungere nuovi campi a un indice di Ricerca di Azure senza ricompilare l'indice.You can add new fields to an Azure Search index without rebuilding the index. Il valore del nuovo campo sarà null per tutti i documenti già presenti nell'indice.The value of the new field will be null for all documents already in the index.

Per mantenere la disponibilità degli indici durante la ricompilazione, è necessario avere una copia dell'indice con un nome diverso nelle stesso servizio oppure una copia dell'indice con lo stesso nome in un servizio diverso e quindi specificare la logica di reindirizzamento o di failover nel codice.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.

Ripristino di emergenzaDisaster recovery

Attualmente, non esiste alcun meccanismo incorporato per il ripristino di emergenza.Currently, there is no built-in mechanism for disaster recovery. L'aggiunta di partizioni o repliche sarebbe una strategia errata per soddisfare gli obiettivi di ripristino di emergenza.Adding partitions or replicas would be the wrong strategy for meeting disaster recovery objectives. Il metodo più comune consiste nell'aggiungere ridondanza a livello di servizio impostando un secondo servizio di ricerca in un'altra area.The most common approach is to add redundancy at the service level by setting up a second search service in another region. Come con la disponibilità durante la ricostruzione di un indice, la logica di reindirizzamento o di failover deve provenire dal codice.As with availability during an index rebuild, the redirection or failover logic must come from your code.

Aumentare le prestazioni delle query con le replicheIncrease query performance with replicas

La latenza delle query indica che sono necessarie repliche aggiuntive.Query latency is an indicator that additional replicas are needed. In genere, un primo passo per migliorare le prestazioni delle query consiste nell'aggiungere altre repliche.Generally, a first step toward improving query performance is to add more of this resource. Quando si aggiungono le repliche, copie aggiuntive dell'indice vengono portate online per supportare carichi di lavoro di query maggiori e per bilanciare il carico delle richieste su più repliche.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.

Non è possibile fornire stime precise sulle query al secondo. Le prestazioni, infatti, dipendono dalla complessità della query e dai carichi di lavoro concorrenti.We cannot provide hard estimates on queries per second (QPS): query performance depends on the complexity of the query and competing workloads. Sebbene l'aggiunta di repliche consenta certamente di migliorare le prestazioni, il risultato non è strettamente lineare. L'aggiunta di tre repliche, infatti, non garantisce una velocità effettiva triplicata.Although adding replicas clearly results in better performance, the result is not strictly linear: adding three replicas does not guarantee triple throughput.

Per informazioni su come stimare il numero di query al secondo per i carichi di lavoro, vedere Considerazioni sulle prestazioni e sull'ottimizzazione di Ricerca di Azure.For guidance in estimating QPS for your workloads, see Azure Search performance and optimization considerations.

Aumentare le prestazioni dell'indicizzazione con le partizioniIncrease indexing performance with partitions

Le applicazioni di ricerca che richiedono l'aggiornamento dei dati quasi in tempo reale avranno bisogno in proporzione di più partizioni che repliche.Search applications that require near real-time data refresh will need proportionally more partitions than replicas. L'aggiunta di partizioni distribuisce le operazioni di lettura/scrittura su un numero più ampio di risorse di calcolo.Adding partitions spreads read/write operations across a larger number of compute resources. Offre inoltre più spazio su disco per l'archiviazione di documenti e indici aggiuntivi.It also gives you more disk space for storing additional indexes and documents.

L'esecuzione di query su indici di dimensioni maggiori può richiedere tempi più lunghi.Larger indexes take longer to query. Di conseguenza, si noterà che ogni aumento incrementale delle partizioni richiede un aumento delle repliche proporzionale ma più limitato.As such, you might find that every incremental increase in partitions requires a smaller but proportional increase in replicas. La complessità e il volume delle query influiscono sulla rapidità di esecuzione delle stesse.The complexity of your queries and query volume will factor into how quickly query execution is turned around.

Livello Basic: combinazioni di partizioni e replicheBasic tier: Partition and replica combinations

Il servizio Basic prevede esattamente una partizione e fino a tre repliche, per un massimo di tre unità di ricerca.A Basic service can have exactly one partition and up to three replicas, for a maximum limit of three SUs. Le repliche sono l'unica risorsa regolabile.The only adjustable resource is replicas. Per la disponibilità elevata relativa alle query è necessario un minimo di due repliche.You need a minimum of two replicas for high availability on queries.

Livello Standard: combinazioni di partizioni e replicheStandard tiers: Partition and replica combinations

La tabella seguente mostra le unità di ricerca necessarie per supportare combinazioni di repliche e partizioni entro il limite di 36 unità di ricerca, per tutti i livelli Standard.This table shows the SUs required to support combinations of replicas and partitions, subject to the 36-SU limit, for all Standard tiers.

1 partizione1 partition 2 partizioni2 partitions 3 partizioni3 partitions 4 partizioni4 partitions 6 partizioni6 partitions 12 partizioni12 partitions
1 replica.1 replica 1 unità di ricerca1 SU 2 unità di ricerca2 SU 3 unità di ricerca3 SU 4 unità di ricerca4 SU 6 unità di ricerca6 SU 12 unità di ricerca12 SU
2 repliche2 replicas 2 unità di ricerca2 SU 4 unità di ricerca4 SU 6 unità di ricerca6 SU 8 unità di ricerca8 SU 12 unità di ricerca12 SU 24 unità di ricerca24 SU
3 repliche3 replicas 3 unità di ricerca3 SU 6 unità di ricerca6 SU 9 unità di ricerca9 SU 12 unità di ricerca12 SU 18 unità di ricerca18 SU 36 unità di ricerca36 SU
4 repliche4 replicas 4 unità di ricerca4 SU 8 unità di ricerca8 SU 12 unità di ricerca12 SU 16 unità di ricerca16 SU 24 unità di ricerca24 SU N/DN/A
5 repliche5 replicas 5 unità di ricerca5 SU 10 unità di ricerca10 SU 15 unità di ricerca15 SU 20 unità di ricerca20 SU 30 unità di ricerca30 SU N/DN/A
6 repliche6 replicas 6 unità di ricerca6 SU 12 unità di ricerca12 SU 18 unità di ricerca18 SU 24 unità di ricerca24 SU 36 unità di ricerca36 SU N/DN/A
12 repliche12 replicas 12 unità di ricerca12 SU 24 unità di ricerca24 SU 36 unità di ricerca36 SU N/DN/A N/DN/A N/DN/A

Le unità di ricerca, i prezzi e le capacità sono illustrati in dettaglio nel sito web di Azure.SUs, pricing, and capacity are explained in detail on the Azure website. Per altre informazioni, vedere i dettagli sui prezzi.For more information, see Pricing Details.

Nota

Il numero di repliche e partizioni divide equamente per 12 (in particolare 1, 2, 3, 4, 6, 12).The number of replicas and partitions divides evenly into 12 (specifically, 1, 2, 3, 4, 6, 12). In questo modo Ricerca di Azure divide preventivamente ogni indice in 12 partizioni in modo che possa essere distribuito ugualmente tra tutte le partizioni.This is because Azure Search pre-divides each index into 12 shards so that it can be spread in equal portions across all partitions. Ad esempio, se il servizio ha tre partizioni e si crea un indice, ogni partizione conterrà quattro partizioni dell'indice.For example, if your service has three partitions and you create an index, each partition will contain four shards of the index. Il modo in cui Ricerca di Azure suddivide un indice in partizioni è un dettaglio di implementazione ed è soggetto a modifiche nelle versioni successive.How Azure Search shards an index is an implementation detail, subject to change in future releases. Sebbene il numero attualmente sia 12, tale numero potrebbe non essere 12 in futuro.Although the number is 12 today, you shouldn't expect that number to always be 12 in the future.

Formula di fatturazione per le risorse di replica e partizioneBilling formula for replica and partition resources

La formula per il calcolo del numero di unità di ricerca usate per combinazioni specifiche è il prodotto delle repliche e delle partizioni, vale a dire (R X P = SU).The formula for calculating how many SUs are used for specific combinations is the product of replicas and partitions, or (R X P = SU). Ad esempio, tre repliche moltiplicate per tre partizioni vengono fatturate come nove unità di ricerca.For example, three replicas multiplied by three partitions is billed as nine SUs.

Il costo per SU è determinato dal livello, con una tariffa di fatturazione per unità inferiore per il livello Basic rispetto al livello Standard.Cost per SU is determined by the tier, with a lower per-unit billing rate for Basic than for Standard. Le tariffe per ogni livello sono disponibili in Prezzi di Ricerca.Rates for each tier can be found on Pricing Details.