Unità di transazione di database (DTU) e unità di transazione di database elastico (eDTU)Database Transaction Units (DTUs) and elastic Database Transaction Units (eDTUs)

Questo articolo illustra le unità di transazione di database (DTU) e le unità di transazione di database elastico (eDTU) e cosa accade quando si raggiunge il numero massimo di DTU o eDTU.This article explains Database Transaction Units (DTUs) and elastic Database Transaction Units (eDTUs) and what happens when you hit the maximum DTUs or eDTUs.

Cosa sono le unità di transazione di database (DTU)?What are Database Transaction Units (DTUs)?

Per un singolo database SQL di Azure a un livello di prestazioni specifico all'interno di un livello di servizio, Microsoft garantisce un certo livello di risorse per il database (a prescindere da qualsiasi altro database nel cloud di Azure) che fornisce un livello di prestazioni prevedibile.For a single Azure SQL database at a specific performance level within a service tier, Microsoft guarantees a certain level of resources for that database (independent of any other database in the Azure cloud) and providing a predictable level of performance. Questa quantità di risorse viene calcolata come numero di unità di transazione di database o DTU ed è una misura combinata di CPU, memoria, I/O (I/O di dati e log delle transazioni).This amount of resources is calculated as a number of Database Transaction Units or DTUs, and is a blended measure of CPU, memory, I/O (data and transaction log I/O). Il rapporto tra queste risorse è stato originariamente stabilito da un carico di lavoro di benchmark OLTP progettato per essere rappresentativo dei carichi di lavoro OLTP reali.The ratio amongst these resources was originally determined by an OLTP benchmark workload designed to be typical of real-world OLTP workloads. Quando il carico di lavoro supera la quantità di una di queste risorse, la velocità effettiva viene limitata, generando timeout e prestazioni più lente.When your workload exceeds the amount of any of these resources, your throughput is throttled - resulting in slower performance and timeouts. Le risorse utilizzate dal carico di lavoro non incidono sulle risorse disponibili per gli altri database SQL nel cloud di Azure e le risorse utilizzate dagli altri carichi di lavoro non incidono sulle risorse disponibili per il database SQL.The resources used by your workload do not impact the resources available to other SQL databases in the Azure cloud, and the resource used by other workloads do not impact the resources available to your SQL database.

rettangolo di selezione

Le DTU sono particolarmente utili per comprendere la quantità relativa di risorse tra i database SQL di Azure a diversi livelli di prestazioni e livelli di servizio.DTUs are most useful for understanding the relative amount of resources between Azure SQL Databases at different performance levels and service tiers. Ad esempio, raddoppiare le DTU aumentando il livello di prestazioni di un database equivale a raddoppiare il set di risorse disponibili per quel database.For example, doubling the DTUs by increasing the performance level of a database equates to doubling the set of resource available to that database. Ad esempio, un database Premium P11 con 1750 DTU fornisce 350 volte più potenza di calcolo DTU di un database Basic con 5 DTU.For example, a Premium P11 database with 1750 DTUs provides 350x more DTU compute power than a Basic database with 5 DTUs.

Per ottenere maggiori dettagli sul consumo di risorse (DTU) del carico di lavoro, usare Query Performance Insight del database SQL di Azure per:To gain deeper insight into the resource (DTU) consumption of your workload, use Azure SQL Database Query Performance Insight to:

  • Identificare le query principali a livello di CPU/durata/conteggio delle esecuzioni, che possono essere potenzialmente ottimizzate per migliorare le prestazioni.Identify the top queries by CPU/Duration/Execution count that can potentially be tuned for improved performance. Ad esempio, una query con utilizzo intensivo dell'I/O potrebbe trarre vantaggio dall'utilizzo di tecniche di ottimizzazione in memoria per ottimizzare l'uso della memoria disponibile in un determinato livello di servizio e livello di prestazioni.For example, an I/O intensive query might benefit from the use of in-memory optimization techniques to make better use of the available memory at a certain service tier and performance level.
  • Eseguire il drill-down dei dettagli di una query, visualizzarne il testo e la cronologia di utilizzo delle risorse.Drill down into the details of a query, view its text and history of resource utilization.
  • Accedere alle raccomandazioni relative all'ottimizzazione delle prestazioni che descrivono le azioni eseguite da Advisor per database SQL.Access performance tuning recommendations that show actions performed by SQL Database Advisor.

È possibile modificare i livelli di servizio in qualsiasi momento con tempi di inattività minimi per l'applicazione, in genere meno di 4 secondi.You can change service tiers at any time with minimal downtime to your application (generally averaging under four seconds). Per molte aziende e app, la possibilità di creare database e connettere o disconnettere prestazioni su richiesta è sufficiente, specialmente se i modelli d'uso sono relativamente prevedibili.For many businesses and apps, being able to create databases and dial performance up or down on demand is enough, especially if usage patterns are relatively predictable. Ma se si dispone di modelli di utilizzo imprevedibili, può risultare difficile gestire i costi e il modello aziendale.But if you have unpredictable usage patterns, it can make it hard to manage costs and your business model. Per questo scenario usare un pool elastico con un determinato numero di eDTU condivise tra più database nel pool.For this scenario, you use an elastic pool with a certain number of eDTUs that are shared among multiple database in the pool.

Introduzione al database SQL: DTU di database singolo in base al livello

Cosa sono le unità di transazione di database elastico (eDTU)?What are elastic Database Transaction Units (eDTUs)?

Anziché fornire un set di risorse (DTU) dedicato a un Database SQL che è sempre disponibile indipendentemente dal fatto che sia necessario o meno, è possibile inserire i database in un pool elastico in un server di database SQL che condivide un pool di risorse tra tali database.Rather than provide a dedicated set of resources (DTUs) to a SQL Database that is always available regardless of whether needed not, you can place databases into an elastic pool on a SQL Database server that shares a pool of resources among those database. Le risorse condivise in un pool elastico sono misurate dalle unità di transazione di database elastiche o eDTU.The shared resources in an elastic pool measured by elastic Database Transaction Units or eDTUs. I pool elastici offrono una soluzione semplice e conveniente per gestire gli obiettivi di prestazioni per più database con modelli di utilizzo estremamente mutevoli e imprevedibili.Elastic pools provide a simple cost effective solution to manage the performance goals for multiple databases that have widely varying and unpredictable usage patterns. In un pool elastico è possibile garantire che nessun database utilizzi tutte le risorse del pool e anche che una minima quantità di risorse sia sempre disponibile per ogni database del pool elastico.In an elastic pool, you can guarantee that no one database uses all of the resources in the pool and also that a minimum amount of resources is always available to a database in an elastic pool.

Introduzione al database SQL: eDTU in base al livello

A un pool viene assegnato un numero definito di eDTU per un prezzo prestabilito.A pool is given a set number of eDTUs, for a set price. All'interno del pool elastico, i singoli database sono sufficientemente flessibili da assicurare la scalabilità automatica nell'ambito di limiti configurati.Within the elastic pool, individual databases are given the flexibility to auto-scale within the configured boundaries. In condizioni di carico elevato, un database può consumare più eDTU per soddisfare la domanda, mentre i database con carico ridotto ne consumano meno, fino ai database senza carico che non ne consumano affatto.Under heavy load, a database can consume more eDTUs to meet demand while databases under light loads consume less, up to the point that databases under no load consume no eDTUs. Effettuando il provisioning delle risorse per l'intero pool e non per i singoli database, le attività di gestione si semplificano e si ha a disposizione un budget prevedibile per il pool.By provisioning resources for the entire pool, rather than per database, management tasks are simplified and you have a predictable budget for the pool.

È possibile aggiungere altre eDTU a un pool esistente senza causare tempi di inattività del database o effetti negativi sui database nel pool.Additional eDTUs can be added to an existing pool with no database downtime and with no impact on the databases in the pool. Analogamente, se le eDTU aggiuntive non sono più necessarie, è possibile rimuoverle da un pool esistente in qualsiasi momento.Similarly, if extra eDTUs are no longer needed, they can be removed from an existing pool at any point in time. È possibile aggiungere o sottrarre database al pool oppure limitare la quantità di eDTU che un database può usare in condizioni di carico elevato per riservare eDTU per altri database.You can add or subtract databases to the pool, or limit the amount of eDTUs a database can use under heavy load to reserve eDTUs for other databases. Se si prevede un sottoutilizzo di risorse per un database, il database può essere rimosso dal pool e configurato come database singolo con la quantità di risorse prevista necessaria.If a database is predictably under-utilizing resources, you can move it out of the pool and configure it as a single database with predictable amount of resources it requires.

Come si determina il numero di DTU necessarie per il carico di lavoro?How can I determine the number of DTUs needed by my workload?

Se si intende eseguire la migrazione di un carico di lavoro locale o di un carico di lavoro di macchine virtuali di SQL Server a un database SQL di Azure, è possibile usare lo strumento di calcolo DTU per simulare il numero di DTU necessarie.If you are looking to migrate an existing on-premises or SQL Server virtual machine workload to Azure SQL Database, you can use the DTU Calculator to approximate the number of DTUs needed. Per un carico di lavoro esistente del database SQL di Azure, è possibile usare Informazioni dettagliate prestazioni query del database SQL per comprendere il consumo di risorse di database (DTU) e ottenere altri dati per l'ottimizzazione del carico di lavoro.For an existing Azure SQL Database workload, you can use SQL Database Query Performance Insight to understand your database resource consumption (DTUs) to get deeper insight into how to optimize your workload. È anche possibile usare la DMV sys.dm_db_ resource_stats per ottenere informazioni sul consumo di risorse per l'ultima ora.You can also use the sys.dm_db_ resource_stats DMV to get the resource consumption information for the last one hour. In alternativa è possibile eseguire query sulla vista del catalogo sys.resource_stats per ottenere gli stessi dati per gli ultimi 14 giorni, anche se a una fedeltà inferiore di medie di cinque minuti.Alternatively, the catalog view sys.resource_stats can also be queried to get the same data for the last 14 days, although at a lower fidelity of five-minute averages.

Come è possibile sapere se un pool elastico di risorse può essere utile?How do I know if I could benefit from an elastic pool of resources?

I pool sono adatti per un numero elevato di database con modelli di utilizzo specifici.Pools are suited for a large number of databases with specific utilization patterns. Per un determinato database, questo modello è caratterizzato da un utilizzo medio ridotto con picchi di utilizzo relativamente poco frequenti.For a given database, this pattern is characterized by low average utilization with relatively infrequent utilization spikes. Database SQL valuta automaticamente la cronologia d’utilizzo delle risorse dei database in un server di database SQL esistente e consiglia una configurazione appropriata del pool nel portale di Azure.SQL Database automatically evaluates the historical resource usage of databases in an existing SQL Database server and recommends the appropriate pool configuration in the Azure portal. Per altre informazioni, vedere Quando usare un pool elasticoFor more information, see when should an elastic pool be used?

Cosa succede se si raggiunge il numero massimo di DTU?What happens when I hit my maximum DTUs?

I livelli di prestazioni vengono calibrati e gestiti per offrire le risorse necessarie per eseguire il carico di lavoro del database fino ai limiti massimi consentiti per il livello di servizio/livello di prestazioni selezionato.Performance levels are calibrated and governed to provide the needed resources to run your database workload up to the max limits allowed for your selected service tier/performance level. Se il carico di lavoro raggiunge uno dei limiti di CPU/IO dati/IO di log, si continuerà a ricevere le risorse al massimo livello consentito, ma probabilmente si noterà un aumento delle latenze per le query.If your workload is hitting the limits in one of CPU/Data IO/Log IO limits, you continue to receive the resources at the maximum allowed level, but you are likely to see increased latencies for your queries. Con questi limiti non si verificheranno errori, ma solo un rallentamento nel carico di lavoro, a meno che il rallentamento non diventi così grave da provocare il timeout delle query. Se si raggiungono i limiti relativi al numero massimo di richieste o di sessioni utente simultanee (thread di lavoro), verranno visualizzati errori espliciti.These limits do not result in any errors, but rather a slowdown in the workload, unless the slowdown becomes so severe that queries start timing out. If you are hitting limits of maximum allowed concurrent user sessions/requests (worker threads), you see explicit errors. Vedere Limiti delle risorse del database SQL di Azure per informazioni sui limiti di risorse diverse da CPU, memoria, I/O di dati e I/O del log delle transazioni.See Azure SQL Database resource limits for information on limit on resources other than CPU, memory, data I/O, and transaction log I/O.

Passaggi successiviNext steps