Creare query per elencare le risorse di Batch in modo efficienteCreate queries to list Batch resources efficiently

Viene illustrato come migliorare le prestazioni dell'applicazione Azure Batch, riducendo la quantità di dati restituiti dal servizio quando si eseguono query su processi, attività e nodi di calcolo con la libreria Batch .NET.Here you'll learn how to increase your Azure Batch application's performance by reducing the amount of data that is returned by the service when you query jobs, tasks, and compute nodes with the Batch .NET library.

Quasi tutte le applicazioni Batch devono eseguire un tipo di monitoraggio o un'altra operazione che esegue query sul servizio Batch, spesso a intervalli regolari.Nearly all Batch applications need to perform some type of monitoring or other operation that queries the Batch service, often at regular intervals. Per determinare ad esempio se sono ancora presenti attività in coda in un processo, è necessario ottenere dati per ogni attività nel processo.For example, to determine whether there are any queued tasks remaining in a job, you must get data on every task in the job. Per determinare lo stato dei nodi nel pool è necessario ottenere dati in ogni nodo nel pool.To determine the status of nodes in your pool, you must get data on every node in the pool. Questo articolo illustra come eseguire queste query nel modo più efficiente.This article explains how to execute such queries in the most efficient way.

Nota

Il servizio Batch fornisce supporto speciale delle API per lo scenario comune di conteggio delle attività in un processo.The Batch service provides special API support for the common scenario of counting tasks in a job. Invece di usare una query di tipo elenco a questo scopo, è possibile chiamare l'operazione di recupero del conteggio delle attività.Instead of using a list query for these, you can call the Get Task Counts operation. Questa operazione restituisce il numero di attività in sospeso, in esecuzione o completate, nonché di quelle riuscite e non riuscite.Get Task Counts indicates how many tasks are pending, running or complete, and how many tasks have succeeded or failed. L'operazione di recupero dei conteggi delle attività è più efficiente di una query di tipo elenco.Get Task Counts is more efficient than a list query. Per altre informazioni, vedere Conteggiare le attività per un processo in base allo stato (anteprima).For more information, see Count tasks for a job by state (Preview).

Questa operazione non è disponibile nelle versioni del servizio Batch precedenti alla 2017-06-01.5.1.The Get Task Counts operation is not available in Batch service versions earlier than 2017-06-01.5.1. Se si usa una versione meno recente del servizio, usare una query di tipo elenco per conteggiare le attività in un processo.If you are using an older version of the service, then use a list query to count tasks in a job instead.

Definire livelli di dettaglioMeet the DetailLevel

In un'applicazione Batch di produzione, le entità da elaborare, ad esempio processi, attività e nodi di calcolo, possono essere migliaia.In a production Batch application, entities like jobs, tasks, and compute nodes can number in the thousands. Quando si richiedono informazioni su queste risorse, una grande quantità di dati deve "transitare" dal servizio Batch all'applicazione in ogni query.When you request information on these resources, a potentially large amount of data must "cross the wire" from the Batch service to your application on each query. Limitando il numero di elementi e il tipo di informazioni restituiti da una query, è possibile aumentarne la velocità e quindi migliorare le prestazioni dell'applicazione.By limiting the number of items and type of information that is returned by a query, you can increase the speed of your queries, and therefore the performance of your application.

Questo frammento di codice dell'API Batch .NET elenca ogni attività associata a un processo, insieme a tutte le proprietà dell'attività:This Batch .NET API code snippet lists every task that is associated with a job, along with all of the properties of each task:

// Get a collection of all of the tasks and all of their properties for job-001
IPagedEnumerable<CloudTask> allTasks =
    batchClient.JobOperations.ListTasks("job-001");

È possibile eseguire una query di tipo elenco molto più efficiente, tuttavia, applicando un "livello di dettaglio" alla query.You can perform a much more efficient list query, however, by applying a "detail level" to your query. A questo scopo, indicare un oggetto ODATADetailLevel al metodo JobOperations.ListTasks.You do this by supplying an ODATADetailLevel object to the JobOperations.ListTasks method. Questo frammento restituisce solo l'ID, la riga di comando e informazioni sulle proprietà del nodo di calcolo delle attività completate:This snippet returns only the ID, command line, and compute node information properties of completed tasks:

// Configure an ODATADetailLevel specifying a subset of tasks and
// their properties to return
ODATADetailLevel detailLevel = new ODATADetailLevel();
detailLevel.FilterClause = "state eq 'completed'";
detailLevel.SelectClause = "id,commandLine,nodeInfo";

// Supply the ODATADetailLevel to the ListTasks method
IPagedEnumerable<CloudTask> completedTasks =
    batchClient.JobOperations.ListTasks("job-001", detailLevel);

Se in questo scenario di esempio il processo include migliaia di attività, il risultato della seconda query viene in genere restituito molto più rapidamente della prima.In this example scenario, if there are thousands of tasks in the job, the results from the second query will typically be returned much quicker than the first. Di seguitosono disponibili altre informazioni sull'uso di ODATADetailLevel quando si elencano elementi con l'API Batch .NET.More information about using ODATADetailLevel when you list items with the Batch .NET API is included below.

Importante

È consigliabile specificare sempre un oggetto ODATADetailLevel per le chiamate di tipo elenco all'API .NET, per assicurare il massimo livello di efficienza e prestazioni dell'applicazione.We highly recommend that you always supply an ODATADetailLevel object to your .NET API list calls to ensure maximum efficiency and performance of your application. Specificando un livello di dettaglio è possibile ridurre i tempi di risposta del servizio Batch, migliorare l'utilizzo della rete e ridurre l'utilizzo di memoria da parte delle applicazioni client.By specifying a detail level, you can help to lower Batch service response times, improve network utilization, and minimize memory usage by client applications.

Filtro, selezione ed espansioneFilter, select, and expand

Le API Batch .NET e Batch REST consentono di ridurre sia il numero di elementi restituiti in un elenco sia la quantità di informazioni restituite per ogni elemento.The Batch .NET and Batch REST APIs provide the ability to reduce both the number of items that are returned in a list, as well as the amount of information that is returned for each. A questo scopo, specificare stringhe di filtro, selezione ed espansione quando si eseguono query di tipo elenco.You do so by specifying filter, select, and expand strings when performing list queries.

FiltroFilter

La stringa di filtro è un'espressione che riduce il numero di elementi restituiti.The filter string is an expression that reduces the number of items that are returned. Ad esempio, elencare solo le attività in esecuzione per un processo o solo i nodi di calcolo pronti per eseguire attività.For example, list only the running tasks for a job, or list only compute nodes that are ready to run tasks.

  • Una stringa di filtro è costituita da una o più espressioni, ciascuna delle quali è composta da un nome di proprietà, un operatore e un valore.The filter string consists of one or more expressions, with an expression that consists of a property name, operator, and value. Le proprietà che è possibile immettere sono specifiche di ogni tipo di entità su cui viene eseguita la query, come lo sono gli operatori supportati per ogni proprietà.The properties that can be specified are specific to each entity type that you query, as are the operators that are supported for each property.
  • È possibile combinare più espressioni usando gli operatori logici and e or.Multiple expressions can be combined by using the logical operators and and or.
  • Questo esempio di stringa di filtro indica solo le attività di "rendering" in esecuzione: (state eq 'running') and startswith(id, 'renderTask').This example filter string lists only the running "render" tasks: (state eq 'running') and startswith(id, 'renderTask').

SelezionareSelect

La stringa di selezione limita i valori della proprietà restituiti per ogni elemento.The select string limits the property values that are returned for each item. Si specifica un elenco di nomi di proprietà e vengono restituiti solo i valori di quelle proprietà per gli elementi nei risultati della query.You specify a list of property names, and only those property values are returned for the items in the query results.

  • La stringa di selezione è costituita da un elenco con valori delimitati da virgole di nomi di proprietà.The select string consists of a comma-separated list of property names. È possibile specificare qualsiasi proprietà per il tipo di entità su cui si esegue la query.You can specify any of the properties for the entity type you are querying.
  • Questa stringa di selezione di esempio specifica che dovranno essere restituiti solo i valori di tre proprietà per ogni attività: id, state, stateTransitionTime.This example select string specifies that only three property values should be returned for each task: id, state, stateTransitionTime.

EspandereExpand

La stringa di espansione riduce il numero di chiamate API richieste per ottenere determinate informazioni.The expand string reduces the number of API calls that are required to obtain certain information. Quando si usa una stringa di espansione, si possono ottenere altre informazioni su ogni elemento con una singola chiamata API.When you use an expand string, more information about each item can be obtained with a single API call. Invece di ottenere prima l'elenco delle entità e quindi richiedere informazioni per ogni elemento nell'elenco, usare una stringa di espansione per ottenere le stesse informazioni in una singola chiamata API.Rather than first obtaining the list of entities, then requesting information for each item in the list, you use an expand string to obtain the same information in a single API call. Meno chiamate API significano prestazioni migliori.Less API calls means better performance.

  • Analogamente alla stringa di selezione, la stringa di espansione controlla se determinati dati sono inclusi nei risultati di una query di tipo elenco.Similar to the select string, the expand string controls whether certain data is included in list query results.
  • La stringa di espansione è supportata solo quando viene usata nell'elenco di processi, pianificazioni di processi, attività e pool.The expand string is only supported when it is used in listing jobs, job schedules, tasks, and pools. Attualmente supporta solo informazioni statistiche.Currently, it only supports statistics information.
  • Quando tutte le proprietà sono obbligatorie e non è stata specificata alcuna stringa di selezione, è necessario usare la stringa di espansione per ottenere informazioni statistiche.When all properties are required and no select string is specified, the expand string must be used to get statistics information. Se si usa una stringa di selezione per ottenere un subset di proprietà, è possibile specificare stats nella stringa di selezione e non è necessario specificare la stringa di espansione.If a select string is used to obtain a subset of properties, then stats can be specified in the select string, and the expand string does not need to be specified.
  • Questo esempio di stringa di espansione specifica che dovranno essere restituite informazioni statistiche per ogni elemento nell'elenco: stats.This example expand string specifies that statistics information should be returned for each item in the list: stats.

Nota

Quando si costruisce uno qualsiasi dei tre tipi di stringhe di query, ovvero filtro, selezione ed espansione, è necessario assicurarsi che i nomi delle proprietà e le lettere maiuscole/minuscole corrispondano alle relative controparti nell'API REST.When constructing any of the three query string types (filter, select, and expand), you must ensure that the property names and case match that of their REST API element counterparts. Ad esempio, quando si usa la classe CloudTask .NET, è necessario specificare state invece di State, anche se la proprietà .NET è CloudTask.State.For example, when working with the .NET CloudTask class, you must specify state instead of State, even though the .NET property is CloudTask.State. Per i mapping delle proprietà tra le API .NET e REST, vedere le tabelle seguenti.See the tables below for property mappings between the .NET and REST APIs.

Regole per le stringhe di filtro, selezione ed espansioneRules for filter, select, and expand strings

  • I nomi delle proprietà nelle stringhe di filtro, selezione ed espansione devono corrispondere a quelli presenti nell'API Batch REST anche quando si usa Batch .NET o uno degli altri SDK di Batch.Properties names in filter, select, and expand strings should appear as they do in the Batch REST API--even when you use Batch .NET or one of the other Batch SDKs.
  • Per tutti i nomi di proprietà viene fatta distinzione tra maiuscole e minuscole, al contrario di quanto avviene per i valori delle proprietà.All property names are case-sensitive, but property values are case insensitive.
  • Le stringhe relative a data/ora possono essere indicate in uno dei due formati seguenti e devono essere precedute da DateTime.Date/time strings can be one of two formats, and must be preceded with DateTime.

    • Esempio di formato W3C-DTF: creationTime gt DateTime'2011-05-08T08:49:37Z'W3C-DTF format example: creationTime gt DateTime'2011-05-08T08:49:37Z'
    • Esempio di formato RFC 1123: creationTime gt DateTime'Sun, 08 May 2011 08:49:37 GMT'RFC 1123 format example: creationTime gt DateTime'Sun, 08 May 2011 08:49:37 GMT'
  • Le stringhe booleane sono true o false.Boolean strings are either true or false.
  • Se si specifica una proprietà o un operatore non valido, viene generato un errore 400 (Bad Request) .If an invalid property or operator is specified, a 400 (Bad Request) error will result.

Esecuzione efficiente di query in Batch .NETEfficient querying in Batch .NET

Nell'API Batch .NET viene usata la classe ODATADetailLevel per specificare le stringhe di filtro, selezione ed espansione alle operazioni di tipo elenco.Within the Batch .NET API, the ODATADetailLevel class is used for supplying filter, select, and expand strings to list operations. La classe ODataDetailLevel presenta tre proprietà pubbliche di tipo stringa che possono essere specificate nel costruttore o impostate direttamente:The ODataDetailLevel class has three public string properties that can be specified in the constructor, or set directly on the object. L'oggetto ODataDetailLevel viene quindi passato come parametro alle diverse operazioni di tipo elenco, ad esempio ListPools, ListJobs e ListTasks.You then pass the ODataDetailLevel object as a parameter to the various list operations such as ListPools, ListJobs, and ListTasks.

Il frammento di codice seguente usa l'API Batch .NET per eseguire query efficienti sul servizio Batch per ottenere le statistiche di un set di pool specificato.The following code snippet uses the Batch .NET API to efficiently query the Batch service for the statistics of a specific set of pools. In questo scenario l'utente Batch ha pool di test e di produzione.In this scenario, the Batch user has both test and production pools. Gli ID del pool di test sono preceduti da "test", mentre quelli del pool di produzione sono preceduti da "prod".The test pool IDs are prefixed with "test", and the production pool IDs are prefixed with "prod". Nel frammento di codice myBatchClient è un'istanza della classe BatchClient inizializzata correttamente.In the snippet, myBatchClient is a properly initialized instance of the BatchClient class.

// First we need an ODATADetailLevel instance on which to set the filter, select,
// and expand clause strings
ODATADetailLevel detailLevel = new ODATADetailLevel();

// We want to pull only the "test" pools, so we limit the number of items returned
// by using a FilterClause and specifying that the pool IDs must start with "test"
detailLevel.FilterClause = "startswith(id, 'test')";

// To further limit the data that crosses the wire, configure the SelectClause to
// limit the properties that are returned on each CloudPool object to only
// CloudPool.Id and CloudPool.Statistics
detailLevel.SelectClause = "id, stats";

// Specify the ExpandClause so that the .NET API pulls the statistics for the
// CloudPools in a single underlying REST API call. Note that we use the pool's
// REST API element name "stats" here as opposed to "Statistics" as it appears in
// the .NET API (CloudPool.Statistics)
detailLevel.ExpandClause = "stats";

// Now get our collection of pools, minimizing the amount of data that is returned
// by specifying the detail level that we configured above
List<CloudPool> testPools =
    await myBatchClient.PoolOperations.ListPools(detailLevel).ToListAsync();

Suggerimento

È anche possibile passare un'istanza di ODATADetailLevel configurata con le clausole Select ed Expand ai metodi Get appropriati, ad esempio PoolOperations.GetPool, per limitare la quantità di dati restituiti.An instance of ODATADetailLevel that is configured with Select and Expand clauses can also be passed to appropriate Get methods, such as PoolOperations.GetPool, to limit the amount of data that is returned.

Mapping di API Batch REST a API .NETBatch REST to .NET API mappings

I nomi delle proprietà nelle stringhe di filtro, selezione ed espansione devono riflettere le rispettive controparti dell'API REST, sia a livello di nome che di lettere maiuscole/minuscole.Property names in filter, select, and expand strings must reflect their REST API counterparts, both in name and case. Le tabelle seguenti forniscono i mapping tra l'API .NET e le relative controparti dell'API REST.The tables below provide mappings between the .NET and REST API counterparts.

Mapping per le stringhe di filtroMappings for filter strings

  • Metodi list .NET: ogni metodo dell'API .NET in questa colonna accetta un oggetto ODATADetailLevel come parametro..NET list methods: Each of the .NET API methods in this column accepts an ODATADetailLevel object as a parameter.
  • Richieste list REST: ogni pagina dell'API REST collegata in questa colonna contiene una tabella che specifica le proprietà e le operazioni consentite nelle stringhe di filtro .REST list requests: Each REST API page linked to in this column contains a table that specifies the properties and operations that are allowed in filter strings. Questi nomi di proprietà e queste operazioni verranno usati per costruire una stringa ODATADetailLevel.FilterClause.You will use these property names and operations when you construct an ODATADetailLevel.FilterClause string.
Metodi list .NET.NET list methods Richieste list RESTREST list requests
CertificateOperations.ListCertificatesCertificateOperations.ListCertificates Elencare i certificati in un accountList the certificates in an account
CloudTask.ListNodeFilesCloudTask.ListNodeFiles Elencare i file associati a un'attivitàList the files associated with a task
JobOperations.ListJobPreparationAndReleaseTaskStatusJobOperations.ListJobPreparationAndReleaseTaskStatus Elencare lo stato della preparazione e le attività di rilascio per un processo specificoList the status of the job preparation and job release tasks for a job
JobOperations.ListJobsJobOperations.ListJobs Elencare i processi in un accountList the jobs in an account
JobOperations.ListNodeFilesJobOperations.ListNodeFiles Elencare i file in un nodoList the files on a node
JobOperations.ListTasksJobOperations.ListTasks Elencare le attività associate a un processoList the tasks associated with a job
JobScheduleOperations.ListJobSchedulesJobScheduleOperations.ListJobSchedules Elencare le pianificazioni di processi in un accountList the job schedules in an account
JobScheduleOperations.ListJobsJobScheduleOperations.ListJobs Elencare i processi associati a una pianificazione di processiList the jobs associated with a job schedule
PoolOperations.ListComputeNodesPoolOperations.ListComputeNodes Elencare i nodi di calcolo in un poolList the compute nodes in a pool
PoolOperations.ListPoolsPoolOperations.ListPools Elencare i pool in un accountList the pools in an account

Mapping per le stringhe di selezioneMappings for select strings

  • Tipi di Batch .NET: tipi di API Batch .NET.Batch .NET types: Batch .NET API types.
  • Entità di API REST: ogni pagina di questa colonna contiene una o più tabelle che indicano i nomi delle proprietà dell'API REST per il tipo.REST API entities: Each page in this column contains one or more tables that list the REST API property names for the type. Questi nomi di proprietà vengono usati per la costruzione di stringhe di selezione .These property names are used when you construct select strings. Questi stessi nomi di proprietà verranno usati per costruire una stringa ODATADetailLevel.SelectClause.You will use these same property names when you construct an ODATADetailLevel.SelectClause string.
Tipi di Batch .NETBatch .NET types Entità di API RESTREST API entities
CertificateCertificate Ottenere informazioni su un certificatoGet information about a certificate
CloudJobCloudJob Ottenere informazioni su un processoGet information about a job
CloudJobScheduleCloudJobSchedule Ottenere informazioni su una pianificazione di processiGet information about a job schedule
ComputeNodeComputeNode Ottenere informazioni su un nodoGet information about a node
CloudPoolCloudPool Ottenere informazioni su un poolGet information about a pool
CloudTaskCloudTask Ottenere informazioni su un'attivitàGet information about a task

Esempio: costruire una stringa di filtroExample: construct a filter string

Quando si costruisce una stringa di filtro per un oggetto ODATADetailLevel.FilterClause, vedere la tabella in "Mapping per le stringhe di filtro" per trovare la pagina di documentazione dell'API REST corrispondente all'operazione di tipo elenco da eseguire.When you construct a filter string for ODATADetailLevel.FilterClause, consult the table above under "Mappings for filter strings" to find the REST API documentation page that corresponds to the list operation that you wish to perform. Le proprietà filtrabili e gli operatori supportati sono disponibili nella prima tabella con più righe in quella pagina.You will find the filterable properties and their supported operators in the first multirow table on that page. Per recuperare ad esempio tutte le attività il cui codice di uscita non è pari a zero, questa riga in Elencare le attività associate a un processo specifica la stringa della proprietà applicabile e gli operatori consentiti:If you wish to retrieve all tasks whose exit code was nonzero, for example, this row on List the tasks associated with a job specifies the applicable property string and allowable operators:

ProprietàProperty Operazioni consentiteOperations allowed TipoType
executionInfo/exitCode eq, ge, gt, le , lt Int

La stringa di filtro per elencare tutte le attività con un codice di uscita non pari a zero sarà:Thus, the filter string for listing all tasks with a nonzero exit code would be:

(executionInfo/exitCode lt 0) or (executionInfo/exitCode gt 0)

Esempio: costruire una stringa di selezioneExample: construct a select string

Per costruire una stringa ODATADetailLevel.SelectClause, vedere la tabella in "Mapping per le stringhe di selezione" e passare alla pagina dell'API REST che corrisponde al tipo di entità da specificare.To construct ODATADetailLevel.SelectClause, consult the table above under "Mappings for select strings" and navigate to the REST API page that corresponds to the type of entity that you are listing. Le proprietà selezionabili e gli operatori supportati sono disponibili nella prima tabella con più righe in quella pagina.You will find the selectable properties and their supported operators in the first multirow table on that page. Se ad esempio si desidera recuperare solo l'ID e la riga di comando per ogni attività in un elenco, queste righe si trovano nella tabella applicabile in Ottenere informazioni su un'attività:If you wish to retrieve only the ID and command line for each task in a list, for example, you will find these rows in the applicable table on Get information about a task:

ProprietàProperty TipoType NoteNotes
id String The ID of the task.
commandLine String The command line of the task.

La stringa di selezione per includere solo l'ID e la riga di comando con ogni attività elencata sarà:The select string for including only the ID and command line with each listed task would then be:

id, commandLine

Esempi di codiceCode samples

Esempio di codice per query di elenco efficientiEfficient list queries code sample

Per verificare il modo in cui una query di tipo elenco può influire efficacemente sulle prestazioni in un'applicazione, vedere il progetto di esempio EfficientListQueries in GitHub.Check out the EfficientListQueries sample project on GitHub to see how efficient list querying can affect performance in an application. Questa applicazione console C# crea e aggiunge un numero elevato di attività a un processo.This C# console application creates and adds a large number of tasks to a job. Esegue quindi più chiamate al metodo JobOperations.ListTasks e passa gli oggetti ODATADetailLevel configurati con valori di proprietà diversi per variare la quantità di dati da restituire.Then, it makes multiple calls to the JobOperations.ListTasks method and passes ODATADetailLevel objects that are configured with different property values to vary the amount of data to be returned. L'output generato sarà simile al seguente:It produces output similar to the following:

Adding 5000 tasks to job jobEffQuery...
5000 tasks added in 00:00:47.3467587, hit ENTER to query tasks...

4943 tasks retrieved in 00:00:04.3408081 (ExpandClause:  | FilterClause: state eq 'active' | SelectClause: id,state)
0 tasks retrieved in 00:00:00.2662920 (ExpandClause:  | FilterClause: state eq 'running' | SelectClause: id,state)
59 tasks retrieved in 00:00:00.3337760 (ExpandClause:  | FilterClause: state eq 'completed' | SelectClause: id,state)
5000 tasks retrieved in 00:00:04.1429881 (ExpandClause:  | FilterClause:  | SelectClause: id,state)
5000 tasks retrieved in 00:00:15.1016127 (ExpandClause:  | FilterClause:  | SelectClause: id,state,environmentSettings)
5000 tasks retrieved in 00:00:17.0548145 (ExpandClause: stats | FilterClause:  | SelectClause: )

Sample complete, hit ENTER to continue...

Come illustrato nelle informazioni sul tempo trascorso, è possibile ridurre notevolmente i tempi di risposta della query limitando le proprietà e il numero di elementi restituiti.As shown in the elapsed times, you can greatly lower query response times by limiting the properties and the number of items that are returned. Questo e altri progetti di esempio sono disponibili nel repository azure-batch-samples in GitHub.You can find this and other sample projects in the azure-batch-samples repository on GitHub.

Libreria BatchMetrics ed esempio di codiceBatchMetrics library and code sample

Oltre all'esempio di codice EfficientListQueries precedente, è possibile trovare il progetto BatchMetrics nel repository azure-batch-samples in GitHub.In addition to the EfficientListQueries code sample above, you can find the BatchMetrics project in the azure-batch-samples GitHub repository. Il progetto di esempio BatchMetrics illustra come monitorare in modo efficiente lo stato dei processi di Azure Batch con l'API di Batch.The BatchMetrics sample project demonstrates how to efficiently monitor Azure Batch job progress using the Batch API.

L'esempio BatchMetrics include un progetto di libreria di classi .NET che è possibile incorporare nei propri progetti e un semplice programma della riga di comando per apprendere l'uso della libreria.The BatchMetrics sample includes a .NET class library project which you can incorporate into your own projects, and a simple command-line program to exercise and demonstrate the use of the library.

L'applicazione di esempio nel progetto illustra le operazioni seguenti:The sample application within the project demonstrates the following operations:

  1. Selezione degli attributi specifici per scaricare solo le proprietà necessarieSelecting specific attributes in order to download only the properties you need
  2. Filtro delle ore di transizione allo stato per scaricare solo le modifiche apportate dopo l'ultima queryFiltering on state transition times in order to download only changes since the last query

Ad esempio, il metodo seguente è presente nella libreria BatchMetrics.For example, the following method appears in the BatchMetrics library. Restituisce un elemento ODATADetailLevel che specifica che dovranno essere ottenute solo le proprietà id e state per le entità sulle quali viene eseguita una query.It returns an ODATADetailLevel that specifies that only the id and state properties should be obtained for the entities that are queried. Specifica anche che dovranno essere restituite solo le entità il cui stato è stato modificato dopo il parametro DateTime specificato.It also specifies that only entities whose state has changed since the specified DateTime parameter should be returned.

internal static ODATADetailLevel OnlyChangedAfter(DateTime time)
{
    return new ODATADetailLevel(
        selectClause: "id, state",
        filterClause: string.Format("stateTransitionTime gt DateTime'{0:o}'", time)
    );
}

Passaggi successiviNext steps

Attività parallele sui nodiParallel node tasks

Ottimizzare l'utilizzo delle risorse di calcolo di Azure Batch con attività dei nodi simultanee è un altro articolo correlato alle prestazioni per l'applicazione Batch.Maximize Azure Batch compute resource usage with concurrent node tasks is another article related to Batch application performance. Alcuni tipi di carichi di lavoro possono trarre vantaggio dall'esecuzione di attività in parallelo su nodi di calcolo più grandi, ma in numero inferiore.Some types of workloads can benefit from executing parallel tasks on larger--but fewer--compute nodes. Vedere lo scenario di esempio nell'articolo per informazioni dettagliate su questo scenario.Check out the example scenario in the article for details on such a scenario.

Forum di BatchBatch Forum

Il forum di Azure Batch su MSDN consente di seguire discussioni su Batch e inviare domande sul servizio.The Azure Batch Forum on MSDN is a great place to discuss Batch and ask questions about the service. Leggere i post contrassegnati e inviare domande durante le procedure di sviluppo delle soluzioni Batch.Head on over for helpful "sticky" posts, and post your questions as they arise while you build your Batch solutions.