Elementi consigliati per l'ottimizzazione delle prestazioni dei dati

Si applica a questa raccomandazione della checklist di efficienza delle prestazioni ben architettata: Power Platform

EPO:08 Ottimizzare le prestazioni dei dati. Ottimizza gli archivi dati per l'uso previsto ed effettivo nel carico di lavoro.

Questa guida descrive gli elementi consigliati per ottimizzare le prestazioni dei dati. Ottimizzare le prestazioni dei dati significa perfezionare l'efficienza con cui il carico di lavoro elabora e archivia i dati. Ogni operazione, transazione o calcolo del carico di lavoro si basa in genere sul recupero, l'elaborazione e l'archiviazione rapidi e accurati dei dati. Quando le prestazioni dei dati sono ottimizzate, il carico di lavoro viene eseguito senza problemi. La compromissione delle prestazioni dei dati crea un effetto domino di scarsa efficienza delle prestazioni. La mancata ottimizzazione delle prestazioni dei dati comporta risposta ritardi, maggiore latenza e scalabilità ridotta. Compromette l'efficienza dell'intero carico di lavoro.

Definizioni

Termine Definizione
Archivio dati Una risorsa che archivia dati come un database, un archivio oggetti o una condivisione file.
Index Una struttura di database che fornisce un rapido accesso agli elementi.
Elaborazione analitica online (OLAP) Una tecnologia che organizza database aziendali di grandi dimensioni, supporta analisi complesse ed esegue query analitiche complesse senza influire negativamente sui sistemi transazionali.
Elaborazione di transazioni online (OLTP) Una tecnologia che registra le interazioni aziendali così come si verificano nelle operazioni quotidiane di un'organizzazione.
Partizionamento Il processo di divisione fisica dei dati in archivi dati separati.
Ottimizzazione delle query Un processo che ottimizza la velocità di una query sul database.

Strategie di progettazione chiave

Per ottimizzare l'utilizzo dei dati, assicurarsi che gli archivi dati siano ottimizzati per l'uso previsto e per l'uso effettivo in un carico di lavoro. L'utilizzo ottimizzato dei dati può migliorare le prestazioni delle query, ridurre il consumo di risorse e migliorare l'efficienza complessiva del sistema. Considerare le strategie seguenti:

  • Dati del profilo. Conosci i tuoi dati e assicurati che il modello dati sia adatto al tuo carico di lavoro. Considera fattori quali la normalizzazione dei dati e le tecniche di partizionamento. Per un recupero efficiente dei dati, assicurati di selezionare tipi di dati appropriati e definisci relazioni tra le tabelle.

  • Ottimizza le prestazioni sulle query. Analizza e ottimizza le query eseguite nel carico di lavoro. Utilizza tecniche come l'ottimizzazione delle query e la memorizzazione nella cache. Utilizza le visualizzazioni lato server per prefiltrare i dati. Per identificare i colli di bottiglia, utilizzare strumenti di monitoraggio delle prestazioni e quindi apportare i miglioramenti necessari.

  • Monitorare e ottimizzare regolarmente il sistema. Monitora continuamente le prestazioni del tuo carico di lavoro ed esegui l'iterazione della configurazione dell'archiviazione dei dati e delle ottimizzazioni delle query. Sulla base delle procedure consigliate di ottimizzazione delle prestazioni, analizza le metriche del sistema, identifica le aree di miglioramento e implementa le modifiche. Man mano che i dati crescono, potrebbe essere necessario aggiornare le query per mantenere le prestazioni.

Dati del profilo

La profilazione dei dati implica l'esame dei dati da un'origine e la raccolta di informazioni su di essi. L'obiettivo è comprendere la qualità, la struttura e le caratteristiche dei dati del carico di lavoro. Questo processo consente l'identificazione di problemi quali valori mancanti, duplicati, formati incoerenti e altre anomalie.

Per una profilazione efficace dei dati, considerare le seguenti strategie:

  • Informazioni sulla struttura dei dati. Esamina la struttura dei tuoi dati, incluse tabelle, colonne e relazioni. Determina tipi di dati, lunghezze e vincoli applicati a ciascuna colonna. La valutazione della struttura dei dati aiuta a comprendere come sono organizzati i dati e come sono correlati ad altri elementi dei dati.

  • Analizza il volume dei dati. Valuta il volume dei tuoi dati per comprendere le dimensioni complessive e i modelli di crescita. Determina il numero di record o documenti e le dimensioni delle singole tabelle o raccolte. Queste informazioni consentono di stimare i requisiti di archiviazione e identificare i problemi di scalabilità.

  • Identifica le relazioni tra i dati. Esplora le relazioni tra gli elementi di dati. Comprendere come sono collegati i dati, in modo da poter determinare in che modo le modifiche in una tabella o in un documento potrebbero influire sui dati correlati.

  • Valutare la qualità dei dati. Valuta la qualità dei tuoi dati esaminando fattori quali completezza, accuratezza, coerenza e unicità. Identifica anomalie dei dati, valori mancanti o record duplicati che potrebbero influire sull'integrità dei dati e sulle prestazioni delle query. Questo passaggio ti aiuta a identificare le aree per la pulizia e il miglioramento dei dati.

  • Acquisire la distribuzione dei dati. Analizza la distribuzione dei valori all'interno di ciascuna colonna per determinare i modelli di dati. Identifica valori frequenti e rari, valori anomali e distorsioni dei dati. Per ottimizzare le prestazioni delle query, analizzare se le chiavi alternative sarebbero appropriate per fornire prestazioni migliori.

Monitorare le prestazioni dei dati

Il monitoraggio delle prestazioni dei dati è la pratica di monitorare costantemente l'efficienza degli archivi dati. Implica la raccolta e l'analisi di parametri relativi alle prestazioni specifici per le operazioni sui dati, utilizzando strumenti su misura per soluzioni di monitoraggio a livello di sistema, specifiche del database o di terze parti. Un monitoraggio efficace delle prestazioni dei dati consente di identificare e mitigare in modo proattivo i potenziali colli di bottiglia, garantendo che i processi e le attività relativi ai dati siano efficienti.

Per monitorare le prestazioni dei dati, prendi in considerazione le seguenti strategie:

  • Raccogli metriche specifiche dei dati. Raccogli le metriche chiave direttamente correlate alle prestazioni dei dati. Queste metriche includono i tempi di risposta alle query e la velocità effettiva dei dati.

  • Impostaavvisi sui dati. Imposta avvisi specifici per le metriche sui dati. Utilizza soglie predefinite o anomalie in queste metriche per attivare avvisi. Gli avvisi ti consentono di ricevere notifiche quando le metriche sulle prestazioni superano gli intervalli accettabili o mostrano comportamenti anomali; ad esempio, se una query sul database richiede più tempo del previsto o se la velocità di trasmissione dei dati diminuisce in modo significativo. Puoi impostare questi avvisi utilizzando strumenti di monitoraggio specializzati o script personalizzati.

  • Diagnosi dei problemi relativi prestazioni dei dati. Esamina regolarmente le metriche dei dati raccolti per identificare potenziali colli di bottiglia o degrado delle prestazioni nelle operazioni sui dati. Gli strumenti di visualizzazione o i dashboard possono rivelarsi preziosi in questo processo, poiché aiutano a evidenziare tendenze, colli di bottiglia e valori anomali nelle prestazioni dei dati. Una volta identificati, indaga sulle cause profonde di questi problemi e pianifica le opportune misure correttive.

Partizionamento dei dati

Il partizionamento implica la divisione di set di dati di grandi dimensioni o carichi di lavoro ad alto volume in set più piccoli e più gestibili. Il partizionamento migliora l'efficienza delle prestazioni dei dati distribuendo il carico di lavoro e migliorando l'elaborazione parallela. Garantisce inoltre un accesso ai dati più efficace in base a esigenze specifiche e modelli di query. Puoi partizionare i dati verticalmente o orizzontalmente (chiamato anche sharding). Ad esempio, se si utilizzano tabelle elastiche Dataverse, considera quale dovrebbe essere la chiave di partizionamento.

Strategia Definizione Esempio Utilizzare casi
Partizione verticale Dividi una tabella in tabelle più piccole selezionando colonne o campi specifici per ciascuna partizione. Ciascuna partizione rappresenta un sottoinsieme dei dati completi. Se hai una tabella con le colonne A, B, C e D, puoi crearne una con le colonne A e B e un'altra con le colonne C e D. - Una tabella contiene molte colonne, ma le query non accedono a tutte le colonne insieme.
- Alcune colonne sono più grandi di altre e separarle può migliorare le prestazioni I/O.
- Parti di dati diverse hanno modelli di accesso diversi.
Partizionamento orizzontale Suddividi i dati in base a righe o intervalli di valori (noto anche come partizionamento orizzontale). Ogni partizione contiene un sottoinsieme di righe con caratteristiche simili. Se hai una tabella con le righe da 1 a 1.000, potresti creare una partizione con le righe da 1 a 500 e un'altra con le righe da 501 a 1.000. - Un set di dati è troppo grande per una singola posizione o server.
- L'accesso ai dati è basato su intervalli o filtri specifici.
- Necessità di distribuire il carico di lavoro su nodi o server fisici per migliorare le prestazioni.

Per partizionare i tuoi dati, considera i seguenti passaggi:

  • Analizza dati e query. Analizza i dati e i modelli di query per identificare strategie di partizionamento o sharding adeguate. Comprendere la natura dei dati, i modelli di accesso e i requisiti di distribuzione.

  • Determinare una chiave. Scegli una chiave di partizionamento o sharding per distribuire i dati tra partizioni o partizioni. Selezionare con attenzione la chiave in base alle caratteristiche dei dati e ai requisiti della query.

  • Determinare la logica. Determinare una logica di partizionamento o sharding in base alla chiave scelta. Valuta la possibilità di dividere i dati in intervalli, applicare algoritmi di hashing o utilizzare altre tecniche di partizionamento.

Ottimizza le query

L'ottimizzazione delle query perfeziona le query per ridurre i dati qualificanti e i dati restituiti. Queste regolazioni aumentano l'efficienza e la velocità del recupero dei dati. Di conseguenza, il database ha un carico di lavoro più leggero, le risorse funzionano in modo più efficace e gli utenti godono di interazioni più fluide.

Per ottimizzare le query del database, prendere in considerazione le seguenti strategie:

  • Riscrivere le query. Esaminare e analizzare query complesse per identificare opportunità per riscriverle. Prendi in considerazione la ristrutturazione della logica delle query, l'eliminazione delle operazioni ridondanti o la semplificazione della sintassi delle query.

  • Evita il problema delle query N+1. Ridurre al minimo il numero di round trip di andata e ritorno al database utilizzando join e recupero batch per recuperare i dati correlati in modo efficiente.

  • Riordina i join. Valuta e prendi in considerazione la possibilità di riorganizzare l'ordine di unione per ridurre al minimo il numero di righe in ciascuna operazione di unione. L'ordine in cui unisci le tabelle può influire sulle prestazioni delle query.

  • Query sulla cache. Memorizza i risultati delle query eseguite di frequente per un facile riutilizzo. La memorizzazione nella cache delle query elimina la necessità di eseguire ripetutamente la stessa query e riduce il sovraccarico di elaborazione delle query.

  • Monitora e sincronizza. Monitora i parametri delle prestazioni delle query, come runtime, utilizzo delle risorse e velocità effettiva delle query. Utilizza strumenti di profilazione del database e funzionalità di monitoraggio per identificare le query con scarse prestazioni. Utilizza tali informazioni per ottimizzare le prestazioni delle query.

Archiviare e rimuovere i dati

L'archiviazione e l'eliminazione sono strategie che semplificano l'archiviazione dei dati. L'archiviazione riposiziona i dati più vecchi e a cui si accede meno frequentemente in uno spazio di archiviazione più conveniente. L'eliminazione dei dati rimuove permanentemente i dati ridondanti. Entrambi i metodi contribuiscono all'efficienza delle prestazioni riducendo il volume dei dati, aumentando la velocità di accesso ai dati e riducendo i tempi di backup e ripristino.

  • Riduzione del volume di dati: meno dati significano tempi di elaborazione più rapidi, garantendo risposte rapide alle richieste degli utenti.
  • Aumento della velocità di accesso ai dati: un set di dati ridotto consente query e recupero dei dati più rapidi, ottimizzando la reattività del sistema.
  • Riduzione dei tempi di backup e ripristino: i set di dati Più piccolo velocizzano i processi di backup e ripristino, riducendo al minimo i tempi di inattività e garantendo prestazioni costanti.

L'archiviazione e l'eliminazione sono fondamentali per mantenere la massima efficienza prestazionale nei sistemi basati sui dati.

Ottimizza il carico di archiviazione

Ottimizzare il carico di archiviazione significa razionalizzare le richieste al sistema di storage. Aiuta a eliminare le richieste non necessarie, migliora il recupero dei dati ed evita di sovraccaricare il sistema di archiviazione. L'ottimizzazione del carico di storage garantisce che il sistema di storage rimanga reattivo alle richieste legittime e mantenga le massime prestazioni. Implementare le strategie per ridurre il carico di elaborazione nell'archivio dati. Per ottimizzare il carico dell'archivio dei dati, considera le strategie riportate di seguito.

Usare la memorizzazione nella cache

La memorizzazione nella cache archivia i dati a cui si accede comunemente in un'area di archiviazione ad accesso rapido, rendendo il recupero dei dati più rapido rispetto all'estrazione dall'origine principale. Questa tecnica migliora le prestazioni dei dati riducendo i tempi di accesso ed evitando recuperi di dati ripetitivi. La memorizzazione nella cache migliora la velocità di lettura e i tempi risposta dell'utente, in particolare per i dati a cui si accede frequentemente. Questo metodo è più efficace su dati statici o dati che cambiano raramente.

Per garantire un'efficienza ottimale della memorizzazione nella cache, considerare fattori come i criteri di scadenza, le strategie di eliminazione e la gestione delle dimensioni della cache. Modifica impostazioni, ad esempio il TTL (time to live), per prestazioni ottimali. Per utilizzare una cache per ottimizzare il carico di archiviazione, prendi in considerazione le seguenti strategie:

  • Caching in memoria: esegue il caching in memoria per archiviare i dati a cui si accede di frequente nella memoria per un rapido recupero. È possibile utilizzare questa tecnica per i dati dell'applicazione che sono costosi da elaborare o da recuperare da un database. La memorizzazione nella cache in memoria è utile per i dati letti frequentemente ma che non vengono modificati frequentemente. Ad esempio, puoi utilizzare variabili nei flussi cloud o raccolte nelle app canvas per memorizzare nella cache i dati.

  • Memorizzazione nella cache delle query del database: utilizzare questa tecnica per memorizzare nella cache i risultati delle query del database per evitare di eseguire la stessa query più volte. La memorizzazione nella cache delle query del database è utile per query di database complesse e dispendiose in termini di tempo. Quando si memorizzano nella cache i risultati di una query, le richieste successive per la stessa query vengono restituite rapidamente. Considera anche l'utilizzo delle visualizzazioni lato server, ove possibile, per prefiltrare i dati e restringere i dati rilevanti per la tua query.

  • Caching della rete di distribuzione dei contenuti: utilizzare questa tecnica per memorizzare nella cache i contenuti Web su server di rete distribuiti per ridurre la latenza e migliorare la distribuzione dei contenuti. La memorizzazione nella cache della rete per la distribuzione dei contenuti è efficace per i contenuti statici, come immagini, file CSS e file JavaScript. Le reti di distribuzione di contenuti archiviano copie dei contenuti in più posizioni in tutto il mondo, in modo che gli utenti possano accedere ai contenuti da un server geograficamente vicino a loro.

Ottimizza aggiornamenti dati

L'ottimizzazione degli aggiornamenti dei dati implica la valutazione degli aggiornamenti dei dati eseguiti per garantire che siano performanti. Gli aggiornamenti possono influenzare le prestazioni più di altre operazioni perché possono attivare lavoro non necessario e causare conflitti di blocchi.

Per valutare come ottimizzare gli aggiornamenti dei dati, considera:

  • Modifiche ai dati. Ottimizza l'automazione per utilizzare immagini in anteprima dei dati o filtri per ridurre al minimo il lavoro quando non si è verificato alcuna modifica effettiva. Evita di attivare l'automazione per i dati non modificati.

  • Automazione. Valuta quando e come vengono attivati ​​gli aggiornamenti in base alle modifiche dei dati e ottimizza i trigger per includere un filtro. Ad esempio, per attivare l'automazione solo quando viene modificato un campo specifico nell'origine dati. Valuta gli aggiornamenti che attivano le automazioni incrementalmente più volte. Valuta invece se puoi creare un'operazione personalizzata per gestire tutta l'elaborazione. Ad esempio, se un ordine viene spedito e la data di spedizione e il numero di tracciabilità vengono aggiornati separatamente, potrebbero essere aggiornati entrambi contemporaneamente in un'operazione personalizzata "ShipOrder".

  • Situazioni di stallo. Valutare le operazioni di aggiornamento lente che potrebbero causare problemi a causa di più flussi che aggiornano gli stessi dati in sequenze diverse. Questa inefficienza può portare a conflitti di blocchi o addirittura a potenziali blocchi, con conseguenti rielaborazioni inutili. Aggiorna le diverse risorse nella stessa sequenza per ridurre al minimo il conflitto.

  • Aggiornamenti in blocco. Se esegui operazioni su più righe di una tabella, valuta la possibilità di utilizzare operazioni in blocco.

Ottimizzare lo spostamento e l'elaborazione dei dati

L'ottimizzazione dello spostamento e dell'elaborazione dei dati implica il miglioramento dell'efficienza e delle prestazioni delle operazioni relative all'estrazione, trasformazione, caricamento ed elaborazione dei dati. Considera i seguenti aspetti chiave per ottimizzare lo spostamento e l'elaborazione dei dati:

  • Ottimizzazione di estrazione, trasformazione e caricamento (ETL): ottimizza i processi ETL per ridurre al minimo i tempi di elaborazione. Puoi semplificare il processo di estrazione, implementare algoritmi di trasformazione efficienti e ottimizzare il processo di caricamento. Quando rendi efficiente ogni passaggio, ottimizzi il flusso di lavoro complessivo.

  • Elaborazione parallela: utilizzare tecniche di elaborazione parallela per migliorare le prestazioni. Quando distribuisci le attività di elaborazione dati su più thread o nodi, puoi dividere ed elaborare il carico di lavoro contemporaneamente, il che si traduce in un'elaborazione rapida.

  • Elaborazione batch: raggruppa attività simili per ridurre le spese generali causate da operazioni ripetute. Elabora più attività in batch per ridurre il tempo di elaborazione complessivo.

Progerrazione della prossimità dei dati

La prossimità dei dati si riferisce al posizionamento strategico dei dati più vicini agli utenti o ai servizi che vi accedono più frequentemente. La riduzione della distanza fisica o logica tra i dati e i relativi utenti garantisce un accesso più rapido ai dati e una migliore reattività. Per ottimizzare la progettazione per la prossimità di chiusura, considera queste strategie:

  • Valutare i modelli di accesso ai dati: valutare i modelli di accesso al carico di lavoro e i dati a cui si accede di frequente. Questa analisi può aiutare a determinare dove posizionare i dati per ottenere il massimo vantaggio.

  • Scegli soluzioni che supportino la ricollocazione dei dati: prendi in considerazione soluzioni che offrano una ricollocazione dinamica dei dati in base a modelli di accesso mutevoli, garantendo un posizionamento ottimale dei dati.

  • Scegli soluzioni che supportino la sincronizzazione dei dati: se stai servendo una base di utenti distribuita, scegli soluzioni che consentano la sincronizzazione dei dati tra le varie regioni, per garantire che le repliche dei dati siano disponibili in prossimità degli utenti.

Compromesso: se i dati sottostanti cambiano frequentemente, implementare un meccanismo di invalidazione della cache per garantire che i dati memorizzati nella cache rimangano aggiornati.

Facilitazione di Power Platform

Monitoraggio delle prestazioni dei dati: per monitorare le prestazioni dei dati, prendi in considerazione l'utilizzo di Azure Monitor per raccogliere e analizzare metriche dell'infrastruttura, registri e dati delle applicazioni. Puoi integrare Monitoraggio con altri servizi quali Application Insights. Application Insights fornisce il monitoraggio delle prestazioni delle applicazioni e supporta molte piattaforme.

Application Insights raccoglie dati sull'utilizzo e sulle prestazioni. Puoi usare Log Analytics per correlare tali dati con i dati di configurazione e prestazioni nelle risorse di Azure. Il flusso dei dati Application Insights per Dataverse attualmente fornisce dati relativi alle prestazioni relativi alle chiamate in arrivo dell'API Dataverse, alle chiamate di esecuzione del plug-in Dataverse e alle chiamate dell'SDK Dataverse.

Ottimizza i modelli di query dei dati nelle app canvas: seguire le linee guida e i suggerimenti documentati. Vedi Modelli di dati delle query ottimizzate di Power Apps.

Ottimizza il modo in cui personalizzi, estendi o integri con Dataverse: seguire le best practice e le linee guida documentate. Vedi Procedure consigliate e indicazioni per l'uso di Microsoft Dataverse.

Ottimizza le query del database e le prestazioni dell'indice: utilizza la funzionalità di analisi delle prestazioni delle query di Azure SQL Database per ottimizzare query, tabelle e database. È inoltre possibile utilizzare questa funzionalità per identificare e risolvere i problemi relativi alle prestazioni delle query.

Per i database relazionali, segui le linee guida per la progettazione dell'indice, le indicazioni sull'indice di SQL Server e Linee guida sull'indice di Cosmos DB di Azure. Utilizza il database SQL per eseguire la sintonizzazione automatica per le query per migliorarne le prestazioni.

Per i database SQL, dovresti regolarmente riorganizzare o ricostruire gli indici. Identificare le query lente e sincronizzale per migliorare le prestazioni. Molti motori di database dispongono di funzionalità di ottimizzazione delle query. Per ulteriori informazioni vedi le procedure consigliate per le prestazioni delle query.

Cosmos DB di Azure ha criteri di indicizzazione predefiniti che indicizzano ogni proprietà di ogni elemento e impone indici di intervallo per qualsiasi stringa o numero. Questi criteri forniscono prestazioni di query efficienti e non è necessario gestire gli indici in anticipo.

Ottimizzazione del carico di archiviazione: molti servizi di database di Azure supportano le repliche di lettura. La disponibilità e la configurazione delle repliche di lettura variano a seconda del servizio database di Azure. Fai riferimento alla documentazione ufficiale di ciascun servizio per comprendere i dettagli e le opzioni.

Elenco di controllo dell'efficienza prestazionale

Fai riferimento alla serie completa di elementi consigliati.