Ridimensionare in modo dinamico le risorse di database con tempo di inattività minimoDynamically scale database resources with minimal downtime

SI APPLICA A: Database SQL di Azure Istanza gestita di SQL di Azure

Il database SQL di Azure e il Istanza gestita SQL consentono di aggiungere in modo dinamico altre risorse al database con tempi di inattivitàminimi. Tuttavia, esiste un passaggio rispetto al periodo in cui la connettività viene persa nel database per un breve intervallo di tempo, che può essere mitigato usando la logica di ripetizione dei tentativi.Azure SQL Database and SQL Managed Instance enable you to dynamically add more resources to your database with minimal downtime; however, there is a switch over period where connectivity is lost to the database for a short amount of time, which can be mitigated using retry logic.

PanoramicaOverview

Quando la domanda per la tua app cresce da pochi dispositivi e clienti a milioni, il database SQL di Azure e SQL Istanza gestita scalabilità immediata con tempi di inattività minimi.When demand for your app grows from a handful of devices and customers to millions, Azure SQL Database and SQL Managed Instance scale on the fly with minimal downtime. La scalabilità è una delle caratteristiche più importanti della piattaforma distribuita come servizio (PaaS) che consente di aggiungere in modo dinamico più risorse al servizio quando necessario.Scalability is one of the most important characteristics of platform as a service (PaaS) that enables you to dynamically add more resources to your service when needed. Database SQL di Azure consente di modificare facilmente le risorse allocate per i database (potenza della CPU, memoria, velocità effettiva IO e storage).Azure SQL Database enables you to easily change resources (CPU power, memory, IO throughput, and storage) allocated to your databases.

È possibile limitare i problemi di prestazione, causati da un maggiore utilizzo dell'applicazione, che non possono essere risolti utilizzando l'indicizzazione o con i metodi di query.You can mitigate performance issues due to increased usage of your application that cannot be fixed using indexing or query rewrite methods. L'aggiunta di altre risorse consente di una reazione rapida quando il database raggiunge i limiti delle risorse correnti e richiede più energia per gestire il carico di lavoro in ingresso.Adding more resources enables you to quickly react when your database hits the current resource limits and needs more power to handle the incoming workload. Database SQL di Azure consente inoltre di ridurre le risorse non necessarie all'abbassamento dei costi.Azure SQL Database also enables you to scale-down the resources when they are not needed to lower the cost.

Non è necessario acquistare un hardware o modificare o l'infrastruttura di base.You don’t need to worry about purchasing hardware and changing underlying infrastructure. Il ridimensionamento di un database può essere eseguito facilmente tramite il portale di Azure usando un dispositivo di scorrimento.Scaling a database can be easily done via the Azure portal using a slider.

Prestazioni del ridimensionamento del database

Il database SQL di Azure offre il modello di acquisto basato su DTU e il modello di acquisto basato su Vcore, mentre Azure SQL istanza gestita offre solo il modello di acquisto basato su vCore.Azure SQL Database offers the DTU-based purchasing model and the vCore-based purchasing model, while Azure SQL Managed Instance offers just the vCore-based purchasing model.

  • Il modello di acquisto basato su DTU offre una combinazione di risorse di calcolo, memoria e I/O in tre livelli di servizio per supportare carichi di lavoro di database leggeri e pesanti: Basic, standard e Premium.The DTU-based purchasing model offers a blend of compute, memory, and I/O resources in three service tiers to support lightweight to heavyweight database workloads: Basic, Standard, and Premium. I livelli delle prestazioni di ogni livello forniscono una diversa combinazione di queste risorse, a cui è possibile aggiungere altre risorse di archiviazione.Performance levels within each tier provide a different mix of these resources, to which you can add additional storage resources.
  • Il modello di acquisto basato su vCore consente di scegliere il numero di vCore, la quantità di memoria e la quantità e la velocità della risorsa di archiviazione.The vCore-based purchasing model lets you choose the number of vCores, the amount or memory, and the amount and speed of storage. Questo modello di acquisto offre tre livelli di servizio: per utilizzo generico, business critical e iperscalabilità.This purchasing model offers three service tiers: General Purpose, Business Critical, and Hyperscale.

È possibile creare la prima app in un singolo database di piccole dimensioni a un costo mensile contenuto nel livello di servizio Basic, Standard o Utilizzo generico e quindi modificare il livello di servizio manualmente o tramite codice in qualsiasi momento passando al livello di servizio Premium o Business Critical in base alle esigenze della soluzione.You can build your first app on a small, single database at a low cost per month in the Basic, Standard, or General Purpose service tier and then change its service tier manually or programmatically at any time to the Premium or Business Critical service tier to meet the needs of your solution. È possibile regolare le prestazioni senza tempi di inattività per l'app o per i clienti.You can adjust performance without downtime to your app or to your customers. La scalabilità dinamica consente al database di rispettare i requisiti in continua evoluzione relativi alle risorse e di pagare solo le risorse necessarie quando necessario.Dynamic scalability enables your database to transparently respond to rapidly changing resource requirements and enables you to only pay for the resources that you need when you need them.

Nota

La scalabilità dinamica è diversa dalla scalabilità automatica.Dynamic scalability is different from autoscale. La scalabilità automatica è quando un servizio viene ridimensionato automaticamente in base ai criteri, mentre la scalabilità dinamica consente la scalabilità manuale con tempi di inattività minimi.Autoscale is when a service scales automatically based on criteria, whereas dynamic scalability allows for manual scaling with a minimal downtime.

I database singoli nel database SQL di Azure supportano la scalabilità dinamica manuale, ma non la scalabilità automatica.Single databases in Azure SQL Database support manual dynamic scalability, but not autoscale. Per un'esperienza più automatica , provare a usare i pool elastici, che consentono ai database di condividere le risorse in un pool in base alle esigenze dei singoli database.For a more automatic experience, consider using elastic pools, which allow databases to share resources in a pool based on individual database needs. Sono tuttavia disponibili script che consentono di automatizzare la scalabilità per un singolo database nel database SQL di Azure.However, there are scripts that can help automate scalability for a single database in Azure SQL Database. Per un esempio, vedere Usare PowerShell per monitorare e ridimensionare un singolo database SQL.For an example, see Use PowerShell to monitor and scale a single SQL Database.

È possibile modificare i livelli di servizio delle DTU o le caratteristiche vCore in qualsiasi momento con tempi di inattività minimi per l'applicazione, in genere meno di 4 secondi.You can change DTU service tiers or vCore characteristics 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 databases in the pool.

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

Il database SQL di Azure offre la possibilità di ridimensionare in modo dinamico i database:Azure SQL Database offers the ability to dynamically scale your databases:

  • Con un Database singolo è possibile usare sia i modelli DTU o vCore per definire la quantità massima di risorse che verranno assegnate a ogni database.With a single database, you can use either DTU or vCore models to define maximum amount of resources that will be assigned to each database.
  • I pool elastici consentono di definire il limite massimo di risorse per ogni gruppo di database nel pool.Elastic pools enable you to define maximum resource limit per group of databases in the pool.

Il Istanza gestita SQL di Azure consente di scalare anche:Azure SQL Managed Instance allows you to scale as well:

  • SQL istanza gestita usa la modalità Vcore e consente di definire i core CPU massimi e la quantità massima di spazio di archiviazione allocato per l'istanza.SQL Managed Instance uses vCores mode and enables you to define maximum CPU cores and maximum of storage allocated to your instance. Tutti i database all'interno dell'istanza gestita condividono le risorse allocate all'istanza.All databases within the managed instance will share the resources allocated to the instance.

Quando si avvia l'azione di aumento o riduzione delle prestazioni in una qualsiasi delle varianti, il processo del motore di database viene riavviato e spostato in una macchina virtuale diversa, se necessario.Initiating scale up or scale down action in any of the flavors would restart database engine process and move it to a different virtual machine if needed. Lo sviluppo del processo del motore di database in una nuova macchina virtuale è un processo online in cui è possibile continuare a usare il servizio database SQL di Azure esistente mentre il processo è in corso.Moving database engine process to a new virtual machine is online process where you can continue using your existing Azure SQL Database service while the process is in progress. Una volta che il motore di database di destinazione è stato completamente inizializzato ed è pronto per l'elaborazione delle query, le connessioni verranno passate dal motore di database di origine a quello di destinazione.Once the target database engine is fully initialized and ready to process the queries, the connections will be switched from source to target database engine.

Nota

Non è consigliabile ridimensionare l'istanza gestita se una transazione a esecuzione prolungata, ad esempio l'importazione di dati, i processi di elaborazione dei dati, la ricompilazione dell'indice e così via, è in esecuzione oppure se si dispone di una connessione attiva sull'istanza.It is not recommended to scale your managed instance if a long-running transaction, such as data import, data processing jobs, index rebuild, etc., is running, or if you have any active connection on the instance. Per evitare che la scalabilità richieda più tempo del solito, è necessario ridimensionare l'istanza al completamento di tutte le operazioni a esecuzione prolungata.To prevent the scaling from taking longer time to complete than usual, you should scale the instance upon the completion of all long-running operations.

Nota

È possibile che si verifichi un breve intervallo di connessione al termine del processo di scalabilità verticale/orizzontale.You can expect a short connection break when the scale up/scale down process is finished. Se è stata implementata la logica di ripetizione dei tentativi per gli errori temporanei standard, il failover non sarà noto.If you have implemented Retry logic for standard transient errors, you will not notice the failover.

Metodi alternativi di scalabilitàAlternative scale methods

Il ridimensionamento delle risorse è il modo più semplice ed efficace per migliorare le prestazioni del database senza modificare il codice del database o dell'applicazione.Scaling resources is the easiest and the most effective way to improve performance of your database without changing either the database or application code. In alcuni casi, anche i livelli di servizio più elevati, le dimensioni di calcolo e le ottimizzazioni delle prestazioni potrebbero non gestire il carico di lavoro in modo efficace ed economicamente conveniente.In some cases, even the highest service tiers, compute sizes, and performance optimizations might not handle your workload in a successful and cost-effective way. In tal caso sono disponibili opzioni aggiuntive per la scalabilità del database:In that case you have these additional options to scale your database:

  • La scalabilità in lettura è una funzionalità disponibile che consente di ottenere una replica di sola lettura dei dati in cui è possibile eseguire query di sola lettura complesse, ad esempio i report.Read scale-out is an available feature where you are getting one read-only replica of your data where you can execute demanding read-only queries such as reports. Una replica di sola lettura gestirà il carico di lavoro di sola lettura senza influire sull'utilizzo delle risorse nel database primario.A read-only replica will handle your read-only workload without affecting resource usage on your primary database.
  • Il Partizionamento di database è un set di tecniche che consente di dividere i dati in diversi database e di ridimensionarli in modo indipendente.Database sharding is a set of techniques that enables you to split your data into several databases and scale them independently.

Passaggi successiviNext steps