Panoramica sul benchmark DTU del database SQL di AzureAzure SQL Database DTU benchmark overview

PanoramicaOverview

Nel modello di acquisto basato su DTU, il database SQL di Microsoft Azure offre tre livelli di servizio con diversi livelli delle prestazioni.In the DTU-based purchasing model, Microsoft Azure SQL Database offers three service tiers with multiple performance levels. Ogni livello di prestazioni fornisce un maggiore set di risorse, o potenza, progettato per garantire un aumento della velocità effettiva.Each performance level provides an increasing set of resources, or ‘power’, designed to deliver increasingly higher throughput.

Importante

Il database SQL di Azure ora supporta anche un modello di acquisto in base ai vCore (anteprima).Azure SQL Database also now supports a vCore-based purchasing model (preview). Per informazioni, vedere Modello di acquisto in base ai vCore (anteprima).For information, see vCore-based purchasing model (preview).

È importante riuscire a quantificare il modo in cui la potenza crescente di ogni livello di prestazioni corrisponda a un aumento delle prestazioni del database.It is important to be able to quantify how the increasing power of each performance level translates into increased database performance. A tale scopo, Microsoft ha sviluppato il benchmark ASDB (Azure SQL Database Benchmark),To do this Microsoft has developed the Azure SQL Database Benchmark (ASDB). che esegue una combinazione di operazioni di base presenti in tutti i carichi di lavoro OLTP.The benchmark exercises a mix of basic operations found in all OLTP workloads. Viene misurata la velocità effettiva raggiunta per i database in esecuzione in ogni livello di prestazioni.We measure the throughput achieved for databases running in each performance level.

Le risorse e la potenza di ogni livello di servizio e di prestazioni sono espressi in termini di unità di velocità effettiva database (DTU, Database Throughput Unit).The resources and power of each service tier and performance level are expressed in terms of Database Transaction Units (DTUs). Le DTU consentono di descrivere la capacità relativa di un livello di prestazioni in base alla misurazione combinata di CPU, memoria e frequenza di lettura e scrittura offerte da ogni livello di prestazioni.DTUs provide a way to describe the relative capacity of a performance level based on a blended measure of CPU, memory, and read and write rates offered by each performance level. Raddoppiare la classificazione DTU di un database equivale a raddoppiarne la potenza.Doubling the DTU rating of a database equates to doubling the database power. Il benchmark consente di valutare l'impatto prodotto sulle prestazioni del database dall'incremento di potenza offerto da ogni livello di prestazioni effettuando operazioni di database effettive e modificando al tempo stesso le dimensioni del database, il numero di utenti e la frequenza transazioni in rapporto alle risorse fornite al database.The benchmark allows us to assess the impact on database performance of the increasing power offered by each performance level by exercising actual database operations, while scaling database size, number of users, and transaction rates in proportion to the resources provided to the database.

Esprimendo la velocità effettiva del livello di servizio Basic con transazioni per ora, del livello di servizio Standard con transazioni per minuto e del livello di servizio Premium con transazioni per secondo, consente di associare più rapidamente il potenziale delle prestazioni di ogni livello di servizio ai requisiti di un'applicazione.By expressing the throughput of the Basic service tier using transactions per-hour, the Standard service tier using transactions per-minute, and the Premium service tier using transactions per-second, it makes it easier to quickly relate the performance potential of each service tier to the requirements of an application.

Correlazione tra i risultati e le prestazioni del database nel mondo realeCorrelating benchmark results to real world database performance

È importante comprendere che ASDB, come tutti i benchmark, ha una funzione esclusivamente rappresentativa e indicativa.It is important to understand that ASDB, like all benchmarks, is representative and indicative only. Le frequenze di transazioni raggiunte con l'applicazione benchmark non saranno uguali a quelle che è possibile ottenere con altre applicazioni.The transaction rates achieved with the benchmark application will not be the same as those that might be achieved with other applications. Il benchmark include una raccolta di diversi tipi di transazioni eseguiti a fronte di uno schema contenente una gamma di tabelle e tipi di dati.The benchmark comprises a collection of different transaction types run against a schema containing a range of tables and data types. Anche se il benchmark esegue le stesse operazioni di base comuni a tutti i carichi di lavoro OLTP, non rappresenta una specifica classe di database o applicazione.While the benchmark exercises the same basic operations that are common to all OLTP workloads, it does not represent any specific class of database or application. L'obiettivo del benchmark è fornire un'indicazione ragionevole delle prestazioni relative di un database previste in caso di riduzione o aumento dei livelli di prestazioni.The goal of the benchmark is to provide a reasonable guide to the relative performance of a database that might be expected when scaling up or down between performance levels. Nella realtà i database hanno dimensioni e complessità diverse, gestiscono combinazioni diverse di carichi di lavoro e rispondono in modi diversi.In reality, databases are of different sizes and complexity, encounter different mixes of workloads, and will respond in different ways. Ad esempio, un'applicazione con un utilizzo elevato di I/O può raggiungere le soglie di I/O prima, così come un'applicazione con un utilizzo elevato di CPU può raggiungere i limiti di CPU in tempi più brevi.For example, an IO-intensive application may hit IO thresholds sooner, or a CPU-intensive application may hit CPU limits sooner. Non vi sono garanzie che la scalabilità di un determinato database corrisponda a quella del benchmark in caso di aumento del carico.There is no guarantee that any particular database will scale in the same way as the benchmark under increasing load.

Il benchmark e la relativa metodologia sono descritti con maggiori dettagli più avanti.The benchmark and its methodology are described in more detail below.

Riepilogo del benchmarkBenchmark summary

Il benchmark ASDB misura le prestazioni di una combinazione di operazioni di database di base che si verificano con maggiore frequenza con carichi di lavoro di elaborazione di transazioni online (OLTP).ASDB measures the performance of a mix of basic database operations which occur most frequently in online transaction processing (OLTP) workloads. Benché il benchmark sia stato progettato tenendo conto del cloud computing, lo schema del database, il popolamento di dati e le transazioni sono stati progettati in modo da rappresentare a grandi linee gli elementi di base usati con maggiore frequenza con carichi di lavoro OLTP.Although the benchmark is designed with cloud computing in mind, the database schema, data population, and transactions have been designed to be broadly representative of the basic elements most commonly used in OLTP workloads.

SCHEMASchema

Lo schema è progettato in modo da prevedere una varietà e una complessità sufficienti per supportare una vasta gamma di operazioni.The schema is designed to have enough variety and complexity to support a broad range of operations. Il benchmark viene eseguito a fronte di un database costituito da sei tabelle.The benchmark runs against a database comprised of six tables. Le tabelle rientrano in tre categorie, ovvero a dimensione fissa, ridimensionabili ed espandibili.The tables fall into three categories: fixed-size, scaling, and growing. Sono presenti due tabelle a dimensione fissa, tre tabelle ridimensionabili e una tabella espandibile.There are two fixed-size tables; three scaling tables; and one growing table. Le tabelle a dimensione fissa includono un numero costante di righe.Fixed-size tables have a constant number of rows. Le tabelle ridimensionabili prevedono una cardinalità proporzionale alle prestazioni del database che però non cambia durante l'esecuzione del benchmark.Scaling tables have a cardinality that is proportional to database performance, but doesn’t change during the benchmark. La tabella espandibile ha le dimensioni di una tabella ridimensionabile con carico iniziale, ma successivamente la cardinalità cambia nel corso dell'esecuzione del benchmark con l'inserimento e l'eliminazione di righe.The growing table is sized like a scaling table on initial load, but then the cardinality changes in the course of running the benchmark as rows are inserted and deleted.

Lo schema include una combinazione di tipi di dati, tra cui valori integer, valori numerici, caratteri e valori di data/ora.The schema includes a mix of data types, including integer, numeric, character, and date/time. Sono incluse chiavi primarie e secondarie, ma non chiavi esterne e non esistono pertanto vincoli di integrità referenziale tra le tabelle.The schema includes primary and secondary keys, but not any foreign keys - that is, there are no referential integrity constraints between tables.

Un programma di generazione di dati genera i dati per il database iniziale.A data generation program generates the data for the initial database. I dati integer e numeric vengono generati con diverse strategie.Integer and numeric data is generated with various strategies. In alcuni casi, i valori vengono distribuiti in modo casuale su un intervallo.In some cases, values are distributed randomly over a range. In altri casi, un insieme di valori viene permutato in modo casuale per garantire che venga mantenuta una distribuzione specifica.In other cases, a set of values is randomly permuted to ensure that a specific distribution is maintained. I campi di testo vengono generati da un elenco ponderato di parole per produrre dati realistici.Text fields are generated from a weighted list of words to produce realistic looking data.

Le dimensioni del database si basano su un "fattore di scala"The database is sized based on a “scale factor.” (SF), che determina la cardinalità delle tabelle ridimensionabili ed espandibili.The scale factor (abbreviated as SF) determines the cardinality of the scaling and growing tables. Come descritto più avanti nella sezione Utenti e velocità, la dimensione del database, il numero di utenti e le prestazioni massime vengono tutti adattati in proporzione.As described below in the section Users and Pacing, the database size, number of users, and maximum performance all scale in proportion to each other.

TransazioniTransactions

Il carico di lavoro è costituito da nove tipi di transazioni, come illustrato nella tabella riportata di seguito.The workload consists of nine transaction types, as shown in the table below. Ogni transazione è progettata per evidenziare un insieme specifico di caratteristiche di sistema nel motore di database e nell'hardware del sistema, con un contrasto elevato rispetto alle altre transazioni.Each transaction is designed to highlight a particular set of system characteristics in the database engine and system hardware, with high contrast from the other transactions. Questo approccio consente di valutare l'impatto dei diversi componenti sulle prestazioni globali.This approach makes it easier to assess the impact of different components to overall performance. La transazione "Operazioni lettura intense" ad esempio produce un numero significativo di operazioni di lettura dal disco.For example, the transaction “Read Heavy” produces a significant number of read operations from disk.

Tipo di transazioneTransaction Type DESCRIZIONEDescription
Operazioni lettura leggereRead Lite SELECT, in memoria, sola letturaSELECT; in-memory; read-only
Operazioni lettura medieRead Medium SELECT, principalmente in memoria, sola letturaSELECT; mostly in-memory; read-only
Operazioni lettura intenseRead Heavy SELECT, principalmente non in memoria, sola letturaSELECT; mostly not in-memory; read-only
Operazioni aggiornamento leggereUpdate Lite UPDATE, in memoria, lettura/scritturaUPDATE; in-memory; read-write
Operazioni aggiornamento intenseUpdate Heavy UPDATE, principalmente non in memoria, lettura/scritturaUPDATE; mostly not in-memory; read-write
Operazioni inserimento leggereInsert Lite INSERT, in memoria, lettura/scritturaINSERT; in-memory; read-write
Operazioni inserimento intenseInsert Heavy INSERT, principalmente non in memoria, lettura/scritturaINSERT; mostly not in-memory; read-write
DeleteDelete DELETE, combinazione in memoria e non in memoria, lettura/scritturaDELETE; mix of in-memory and not in-memory; read-write
Operazioni CPU intenseCPU Heavy SELECT, in memoria, carico CPU relativamente pesante, sola letturaSELECT; in-memory; relatively heavy CPU load; read-only

Combinazione di carichi di lavoroWorkload mix

Le transazioni vengono selezionate casualmente da una distribuzione ponderata con la seguente combinazione globale.Transactions are selected at random from a weighted distribution with the following overall mix. La combinazione globale presenta un rapporto di lettura/scrittura di circa 2:1.The overall mix has a read/write ratio of approximately 2:1.

Tipo di transazioneTransaction Type % di combinazione% of Mix
Operazioni lettura leggereRead Lite 3535
Operazioni lettura medieRead Medium 2020
Operazioni lettura intenseRead Heavy 55
Operazioni aggiornamento leggereUpdate Lite 2020
Operazioni aggiornamento intenseUpdate Heavy 33
Operazioni inserimento leggereInsert Lite 33
Operazioni inserimento intenseInsert Heavy 22
DeleteDelete 22
Operazioni CPU intenseCPU Heavy 1010

Utenti e velocitàUsers and pacing

Il carico di lavoro del benchmark si basa su uno strumento che invia transazioni attraverso un insieme di connessioni per simulare il comportamento di numerosi utenti simultanei.The benchmark workload is driven from a tool that submits transactions across a set of connections to simulate the behavior of a number of concurrent users. Benché tutte le connessioni e transazioni siano generate da un computer, per semplicità vengono indicate come "utenti".Although all of the connections and transactions are machine generated, for simplicity we refer to these connections as “users.” Sebbene ogni utente agisca in modo indipendente da tutti gli altri, tutti gli utenti eseguono lo stesso ciclo di passaggi illustrato di seguito:Although each user operates independently of all other users, all users perform the same cycle of steps shown below:

  1. Stabilire una connessione di database.Establish a database connection.
  2. Ripetere le seguenti operazioni fino al segnale di uscita:Repeat until signaled to exit:
    • Selezionare una transazione in modo casuale (da una distribuzione ponderata).Select a transaction at random (from a weighted distribution).
    • Eseguire la transazione selezionata e misurare il tempo di risposta.Perform the selected transaction and measure the response time.
    • Attendere un ritardo velocità.Wait for a pacing delay.
  3. Chiudere la connessione di database.Close the database connection.
  4. Uscire.Exit.

Il ritardo velocità (passaggio 2c) viene selezionato in modo casuale, ma con una distribuzione che presenta una media di 1,0 secondi.The pacing delay (in step 2c) is selected at random, but with a distribution that has an average of 1.0 second. Pertanto, ogni utente in media può generare al massimo una transazione al secondo.Thus each user can, on average, generate at most one transaction per second.

Regole di ridimensionamentoScaling rules

Il numero di utenti è determinato dalle dimensioni del database (in unità di fattore di conversione).The number of users is determined by the database size (in scale-factor units). Esiste un utente per ogni unità di fattore di scala.There is one user for every five scale-factor units. A causa del ritardo velocità, un utente in media può generare al massimo una transazione al secondo.Because of the pacing delay, one user can generate at most one transaction per second, on average.

Ad esempio, un database con fattore di scala pari a 500 (SF=500) avrà 100 utenti e potrà raggiungere una frequenza massima di 100 TPS.For example, a scale-factor of 500 (SF=500) database will have 100 users and can achieve a maximum rate of 100 TPS. Per ottenere un valore TPS più elevato, sono necessari più utenti e un database di dimensioni maggiori.To drive a higher TPS rate requires more users and a larger database.

La tabella seguente illustra il numero di utenti effettivamente supportati per ogni livello di servizio e ogni livello di prestazioni.The table below shows the number of users actually sustained for each service tier and performance level.

Livello di servizio (livello di prestazioni)Service Tier (Performance Level) UtentiUsers Dimensioni databaseDatabase Size
BasicBasic 55 720 MB720 MB
Standard (S0)Standard (S0) 1010 1 GB1 GB
Standard (S1)Standard (S1) 2020 2,1 GB2.1 GB
Standard (S2)Standard (S2) 5050 7,1 GB7.1 GB
Premium (P1)Premium (P1) 100100 14 GB14 GB
Premium (P2)Premium (P2) 200200 28 GB28 GB
Premium (P6)Premium (P6) 800800 114 GB114 GB

Durata della misurazioneMeasurement duration

Per l'esecuzione di un benchmark valido è necessaria una durata della misurazione in condizioni stabili di almeno un'ora.A valid benchmark run requires a steady-state measurement duration of at least one hour.

MetricheMetrics

La metrica di base del benchmark è rappresentata dalla velocità effettiva e dal tempo di risposta.The key metrics in the benchmark are throughput and response time.

  • La velocità effettiva è l'unità di misura di base delle prestazioni nel benchmark.Throughput is the essential performance measure in the benchmark. Viene misurata in transazioni per unità di tempo, conteggiando tutti i tipi di transazioni.Throughput is reported in transactions per unit-of-time, counting all transaction types.
  • Il tempo di risposta consente di misurare la prevedibilità delle prestazioni.Response time is a measure of performance predictability. Il vincolo del tempo di risposta varia in base alla classe di servizio. I servizi di classe superiore prevedono requisiti di tempi di risposta più rigorosi, come illustrato di seguito.The response time constraint varies with class of service, with higher classes of service having a more stringent response time requirement, as shown below.
Classe di servizioClass of Service Misura della velocità effettivaThroughput Measure Requisito di tempi di rispostaResponse Time Requirement
PremiumPremium Transazioni al secondoTransactions per second 95° percentile a 0,5 secondi95th percentile at 0.5 seconds
StandardStandard Transazioni al minutoTransactions per minute 90° percentile a 1,0 secondi90th percentile at 1.0 seconds
BasicBasic Transazioni all'oraTransactions per hour 80° percentile a 2,0 secondi80th percentile at 2.0 seconds

ConclusioniConclusion

Il benchmark ASDB misura le prestazioni relative del database SQL di Azure in esecuzione con i diversi livelli di servizio e di prestazioni disponibili.The Azure SQL Database Benchmark measures the relative performance of Azure SQL Database running across the range of available service tiers and performance levels. Il benchmark testa una combinazione di operazioni di database di base che si verificano con maggiore frequenza con carichi di lavoro di elaborazione di transazioni online (OLTP).The benchmark exercises a mix of basic database operations which occur most frequently in online transaction processing (OLTP) workloads. Misurando le prestazioni effettive, il benchmark fornisce una valutazione più significativa dell'impatto prodotto sulla velocità effettiva dalla modifica del livello di prestazioni rispetto alla valutazione che è possibile ottenere elencando semplicemente le risorse fornite da ogni livello, ad esempio la velocità della CPU, le dimensioni della memoria e le operazioni di input/output al secondo (IOPS).By measuring actual performance, the benchmark provides a more meaningful assessment of the impact on throughput of changing the performance level than is possible by just listing the resources provided by each level such as CPU speed, memory size, and IOPS. In futuro il benchmark verrà esteso in modo da ampliarne l'ambito ed espandere i dati forniti.In the future, we will continue to evolve the benchmark to broaden its scope and expand the data provided.

RisorseResources

Introduzione al database SQLIntroduction to SQL Database

Livelli di servizio e livelli di prestazioniService tiers and performance levels

Indicazioni sulle prestazioni per database singoliPerformance guidance for single databases