Pianificare le distribuzioni Database di Azure per PostgreSQL per le prestazioni operative

Il cloud computing ha ridisegnato notevolmente il panorama dell'hosting del database. Offre ai team l'accesso a scalabilità, resilienza, copertura globale e funzionalità che in precedenza non erano raggiungibili. Invece di incorrere in costi e costi elevati pianificando il carico di lavoro più grande possibile (e portando tale costo dal primo giorno), i team possono ora ottimizzare in base alla scala precisa di cui hanno bisogno, quando necessario, e regolare in base al cambiamento delle loro esigenze.

Introduction

La flessibilità di scegliere il bilanciamento appropriato delle risorse è particolarmente utile per le distribuzioni di database PostgreSQL. I carichi di lavoro del database PostgreSQL possono iniziare di piccole dimensioni, crescere rapidamente, aumentare stagionalmente, passare da un carico intensivo di lettura a uno intensivo di scrittura oppure evolversi in tempo reale da carichi di lavoro transazionali a sistemi ibridi operativi e analitici. Database di Azure per PostgreSQL garantisce che le soluzioni raggiungono gli obiettivi offrendo un'ampia gamma di opzioni tra calcolo, archiviazione, disponibilità, replica, sicurezza, backup e gestione operativa.

Tuttavia, con tutta questa potenza si assume la responsabilità, soprattutto quando si pianificano le distribuzioni. Per ottenere prestazioni ottimali, le decisioni sulla distribuzione devono corrispondere ai requisiti complessivi del carico di lavoro.

Una distribuzione di Database di Azure per PostgreSQL riuscita non è solo una questione di scegliere "i core e la memoria più necessari". Le prestazioni operative massime derivano invece dalla comprensione dei comportamenti dell'applicazione, dei comportamenti del client, del calcolo, dell'archiviazione e delle caratteristiche di crescita del database e del modo in cui questi intersecano e interagiscono.

La migliore architettura è quella in cui questi pezzi sono intenzionalmente allineati.

La pianificazione delle prestazioni del cloud è una responsabilità condivisa

Uno dei principali vantaggi del passaggio a una piattaforma cloud attendibile è il modello di responsabilità condivisa. Microsoft fornisce l'infrastruttura globale, i servizi gestiti, l'innovazione hardware, l'affidabilità, la sicurezza e l'ingegneria operativa. I team mettono a disposizione le competenze specifiche del contesto dell'applicazione: criticità aziendale, comportamento del carico di lavoro, progettazione del modello di dati, profilo del traffico di rete, aspettative di crescita, obiettivi di ripristino e requisiti dell'esperienza dell'utente finale.

I risultati più forti si verificano quando queste due forze sono unificate.

Azure offre un'infrastruttura Postgres altamente scalabile, ma il team deve ottenere informazioni dettagliate su queste aree:

  • Quanti utenti simultanei sono previsti durante i periodi normali e di picco?
  • Le operazioni più importanti sono orientate alla lettura, orientate alla scrittura o miste?
  • Si verifica un picco della domanda durante le finestre di fine mese, fine trimestre, festività, lanci o finestre di reportistica?
  • Quanto è veloce la crescita del set di dati?
  • Quali operazioni sono sensibili alla latenza?
  • Quali query o processi possono tollerare runtime più lunghi?
  • Il carico di lavoro è principalmente OLTP, OLAP o ibrido?
  • I client si trovano nelle vicinanze dell'area del database, distribuite a livello globale o concentrate in un'unica area geografica?

Acquisire questi dettagli prima della distribuzione, non dopo un evento imprevisto di produzione. Le distribuzioni cloud semplificano la scalabilità, ma le progettazioni con prestazioni più elevate e più convenienti iniziano ancora con la raccolta di requisiti sonori e la pianificazione corretta. Nella maggior parte dei casi, queste domande possono essere distillati fino alle relazioni tra connessioni simultanee, numero massimo di operazioni di I/O al secondo e velocità effettiva richiesta.

Le prestazioni hanno più livelli

Le prestazioni del database sono raramente determinate da una singola impostazione. Le esperienze di distribuzione riuscite dipendono da diversi livelli che interagiscono tra loro:

  • Prestazioni del livello applicazione.
    Questo livello include il codice dell'applicazione, i modelli di query, la copertura degli indici, l'utilizzo dei trigger, il partizionamento dei dati, la gestione della connessione, la memorizzazione nella cache, la logica di ripetizione dei tentativi, il pool, il comportamento ORM, la progettazione delle transazioni e il comportamento del processo in background.
  • Prestazioni del livello client e di rete.
    Questo livello include dove si trovano i client, come si connettono, se le richieste attraversano le regioni e le zone di disponibilità, la latenza di rete, l'overhead TLS, la rotazione delle connessioni e se l'applicazione usa il pooling delle connessioni in modo efficiente.
  • Prestazioni della piattaforma di database.
    Questo livello include la configurazione della distribuzione di Postgres, le dimensioni di calcolo, la memoria, la CPU, il tipo di archiviazione, le dimensioni di archiviazione, le operazioni di I/O al secondo, velocità effettiva di archiviazione, disponibilità elevata, repliche e operazioni di manutenzione.

Questo articolo è incentrato principalmente sul terzo livello: pianificazione della distribuzione del database Postgres Azure in modo che le scelte di calcolo e archiviazione supportino il profilo di prestazioni richiesto.

Database di Azure per PostgreSQL offre flessibilità, ma la pianificazione è essenziale

Database di Azure per PostgreSQL Flexible Server offre un'ampia gamma di opzioni di distribuzione, tra cui:

Area di distribuzione Opzioni disponibili
Compute Livelli di calcolo, generazioni di macchine virtuali (VM), configurazioni per utilizzo generico e configurazioni ottimizzate per la memoria.
Storage Azure SSD Premium v1, SSD Premium v2, ridimensionamento dell'archiviazione, configurazione delle operazioni di I/O al secondo e configurazione della velocità effettiva.
Availability Disponibilità elevata, backup e ripristino e backup con ridondanza geografica nelle configurazioni supportate.
Replication Repliche in lettura e repliche geografiche.
Security Chiavi gestite dal cliente e integrazione della sicurezza aziendale.

Questa flessibilità è potente perché i diversi carichi di lavoro richiedono funzionalità diverse. Un sistema transazionale con intensa attività di scrittura non richiede lo stesso profilo di un sistema con un elevato numero di report. Un'applicazione SaaS globale non richiede la stessa progettazione di un'applicazione interna a livello di area. Un database in crescita di 5% all'anno non richiede lo stesso piano di archiviazione di un aumento di 200% mese nel mese.

L'obiettivo della pianificazione è identificare le esigenze del profilo di prestazioni del carico di lavoro e quindi implementare le scelte appropriate in entrambe le opzioni di calcolo e archiviazione per offrire correttamente le soluzioni end-to-end.

Iniziare con il profilo del carico di lavoro

Prima di scegliere calcolo o archiviazione, definire il carico di lavoro. Le dimensioni di pianificazione utili includono:

Area di pianificazione Domande a cui rispondere
Geografia Dove si trovano utenti, applicazioni, repliche e integrazioni?
Concurrency Quante connessioni simultanee e query attive sono previste?
Dimensioni dei dati Qual è la dimensione corrente del database e qual è il tasso di crescita previsto?
Frequenza di modifica Quanto rapidamente aumentano i dati nel mese? Quanti log write-ahead (WAL) vengono generati?
Tipo di carico di lavoro Il sistema è OLTP, OLAP, con molti report, con molti processi batch o ibrido?
Combinazione di lettura/scrittura Qual è la percentuale di operazioni di lettura e scrittura?
Comportamento picco Esistono cicli economici prevedibili, picchi stagionali o finestre batch?
Sensibilità alla latenza Quali transazioni sono rivolte all'utente e critiche per la latenza?
Esigenze di larghezza di banda Sono presenti analisi, esportazioni, importazioni o processi di estrazione, trasformazione e caricamento (ETL) di grandi dimensioni?
Aspettative di scalabilità Il carico di lavoro richiederà picchi temporanei o prestazioni sostenute più elevate?

L'obiettivo non è prevedere perfettamente il futuro. L'obiettivo è evitare di progettare in modo cieco.

Comprendere i tre concetti principali relativi alle prestazioni di archiviazione

La pianificazione delle prestazioni di archiviazione in Azure si concentra solitamente su tre concetti correlati ma distinti: IOPS (operazioni di I/O al secondo), larghezza di banda e latenza. Questi fattori sono fondamentali per la pianificazione delle prestazioni dell'applicazione.

IOPS

IOPS significa operazioni di input/output al secondo. Misura il numero di operazioni di lettura o scrittura che il database può inviare alla risorsa di archiviazione ogni secondo.

IOPS è particolarmente importante per i carichi di lavoro OLTP. Questi sistemi spesso eseguono molte operazioni di lettura e scrittura casuali di piccole dimensioni, ad esempio inserimenti, aggiornamenti, ricerche di indici, letture di punti e transazioni brevi. Un carico di lavoro transazionale con migliaia di utenti simultanei potrebbe richiedere operazioni di I/O al secondo elevate anche se ogni singola operazione è piccola.

Gli scenari comuni sensibili agli IOPS includono:

  • Elaborazione di ordini ad alto volume
  • Aggiornamenti del profilo utente
  • Sistemi di inventario
  • Inserimento di eventi
  • Sistemi di pagamento o fatturazione
  • Applicazioni SaaS altamente simultanee

Capacità di produzione

La velocità effettiva, talvolta denominata larghezza di banda, misura la quantità di dati che è possibile leggere o scrivere nell'archiviazione nel tempo. È espresso in MB/s.

La velocità effettiva è importante quando le operazioni spostano grandi quantità di dati. Le query analitiche, i backup, i ripristini, i processi batch, le compilazioni di indici, le analisi delle tabelle e i flussi di lavoro ETL potrebbero richiedere una velocità effettiva elevata anche se non richiedono le operazioni di I/O al secondo più elevate.

Gli scenari comuni sensibili alla velocità effettiva includono:

  • Creazione di report su tabelle di grandi dimensioni
  • Importazioni o esportazioni in blocco
  • Analisi in stile data warehouse
  • Operazioni di backup e ripristino
  • Operazioni di creazione o ricompilazione di indici di grandi dimensioni
  • Elaborazione in batch

Latenza

La latenza è il tempo necessario per il completamento di una singola richiesta di I/O. La bassa latenza è essenziale per le operazioni di database rivolte all'utente, soprattutto in cui molte operazioni di piccole dimensioni vengono concatenate in una transazione.

Un sistema può avere operazioni di I/O al secondo teorice elevate, ma si sente comunque lento se la latenza è elevata. Per i carichi di lavoro Postgres, la latenza di archiviazione può influire direttamente sui tempi di risposta delle query, sul comportamento del commit delle transazioni, sul comportamento del checkpoint e sulla velocità di risposta complessiva dell'applicazione.

Annotazioni

I dischi SSD v1 Premium sono progettati per latenze di millisecondi a cifra singola per la maggior parte delle operazioni di I/O e, in particolare, la memorizzazione nella cache del disco può ridurre ulteriormente la latenza di lettura per le configurazioni del disco inferiori a 4 TB. Premium SSD v2 e Ultra Disk offrono latenza sub-millisecondi.

Le operazioni di I/O al secondo, la velocità effettiva e la latenza devono essere considerate insieme

Le operazioni di I/O al secondo (IOPS) e il throughput sono connessi. Un carico di lavoro che esegue diverse piccole operazioni da 8 KiB potrebbe comportare elevati IOPS senza una larghezza di banda elevata. Un carico di lavoro che emette operazioni multi MB di grandi dimensioni potrebbe comportare una velocità effettiva elevata con un numero inferiore di IOPS.

Un modo semplice per pensarci:

IOPS x Dimensione I/O = Throughput

Per Postgres, l'implicazione pratica è che la pianificazione dell'archiviazione del carico di lavoro deve essere basata sul comportamento osservato o stimato del carico di lavoro, non solo sulle dimensioni del database. Per esempio:

  • Un sistema OLTP a concorrenza elevata potrebbe richiedere più operazioni di I/O al secondo e una latenza inferiore.
  • Un sistema con un numero elevato di report potrebbe richiedere una maggiore velocità effettiva.
  • Un sistema ibrido potrebbe richiedere entrambi, soprattutto durante i cicli di picco.
  • Un sistema OLTP a concorrenza elevata potrebbe richiedere più operazioni di I/O al secondo e una latenza inferiore.
  • Un sistema con un numero elevato di report potrebbe richiedere una maggiore velocità effettiva.
  • Un sistema ibrido potrebbe richiedere entrambi, soprattutto durante i cicli di picco.

Le scelte di distribuzione influiscono direttamente sulle prestazioni di archiviazione

Un errore comune consiste nell'impostare lo spazio di archiviazione per un numero di prestazioni di destinazione senza considerare completamente se lo SKU di calcolo selezionato può guidare gli stessi livelli di prestazioni.

Le prestazioni di archiviazione di Azure richiedono molteplici considerazioni. Tali dettagli includono:

  • Set di funzionalità di calcolo (numero massimo di operazioni di I/O al secondo di calcolo e limiti di velocità effettiva).
  • Generazione di archiviazione (SSD v1, SSD v2, Disco Ultra).
  • Le dimensioni del disco di archiviazione (dischi SSD v1 con 4.096 GB includono la memorizzazione nella cache dell'host, che consente picchi di operazioni di I/O al secondo oltre le baseline standard).
  • Capacità di IOPS di archiviazione.
  • Capacità della velocità effettiva di archiviazione.

In termini pratici: il limite effettivo delle prestazioni è il limite più basso rilevante nella catena.

Se la configurazione di archiviazione può fornire 80.000 operazioni di I/O al secondo, ma lo SKU di calcolo può solo guidare 20.000 operazioni di I/O al secondo, la distribuzione non fornisce 80.000 operazioni di I/O al secondo. Viceversa, se la generazione di macchine virtuali supporta elevati IOPS, ma il livello di archiviazione selezionato è limitato, il livello di archiviazione diventa il limite.

La pianificazione delle risorse di calcolo e archiviazione deve essere eseguita insieme.

SSD Premium v1: prestazioni di base elevate con un comportamento importante di memorizzazione nella cache

SSD Premium v1 è una scelta comune per carichi di lavoro Postgres su Azure in produzione che richiedono prestazioni prevedibili e con provisioning. Azure Postgres SSD v1 supporta fino a 32 TB di spazio, 20.000 IOPS e 900 MB/s di larghezza di banda.

Ssd Premium v1 funziona bene per i carichi di lavoro che traggono vantaggio dalla memorizzazione nella cache dell'host. Azure Postgres supporta la memorizzazione nella cache dell'host per le dimensioni del disco SSD v1 inferiori a 4.096 GB. Qualsiasi disco provisionato fino a 4.095 GB può trarre vantaggio dalla cache dell'host. Una volta che è stato eseguito il provisioning dell'archiviazione a 4.096 GB o superiore, la memorizzazione nella cache dell'host non è supportata. Questo limite è importante. Per le distribuzioni ssd Premium v1 con meno di 4 TB, la memorizzazione nella cache può migliorare le prestazioni di lettura e ridurre la latenza di lettura. Questa memorizzazione nella cache consente di ottenere un'eccellente efficienza in rapporto costi-prestazioni per carichi di lavoro di lettura o misti che rientrano sotto la soglia di caching.

Perché il limite di 4 TB è importante

Quando una distribuzione SSD Premium v1 cresce oltre l'intervallo supportato dal caching, il profilo delle prestazioni può cambiare:

  • Le operazioni di lettura non traggono più vantaggio dalla cache host.
  • Altre operazioni di lettura provengono direttamente dal disco sottostante.
  • Esegue il conteggio delle operazioni di I/O al secondo del disco e dei limiti di velocità effettiva.
  • I carichi di lavoro di lettura sensibili alla latenza potrebbero visualizzare un comportamento diverso.
  • Una configurazione precedentemente efficiente potrebbe richiedere più IOPS assegnate, maggiore velocità effettiva, scalabilità delle risorse di calcolo, ottimizzazione delle query o un'opzione di archiviazione diversa.

Superare i 4 TB non è un problema, ma è necessario pianificarlo.

Se si prevede che un database venga a crescere oltre 4 TB, prendere in considerazione lo stato futuro durante la progettazione dell'architettura. Una progettazione che offre prestazioni ottimali a 2 TB con la memorizzazione nella cache potrebbe richiedere un piano di prestazioni diverso a 5 TB senza memorizzazione nella cache.

Burst aiuta con picchi, ma non sostituisce la capacità sostenuta

Azure Postgres Premium SSD v1 con allocazioni di archiviazione inferiori a 4 TB supportano rapidi aumenti della memorizzazione nella cache dell'host, che possono risultare utili in scenari come:

  • Attività di avvio
  • Processi batch brevi
  • Picchi di traffico
  • Elaborazione di fine mese
  • Picchi temporanei del carico di lavoro

Anche se il bursting è utile, usarlo con attenzione. Il bursting può assorbire i picchi temporanei, ma non deve essere la base per una domanda di carico di lavoro continuativa. Se il carico di lavoro viene spesso eseguito sopra la baseline, è preferibile effettuare il provisioning di un livello di prestazioni superiore, modificare le impostazioni delle prestazioni di archiviazione, ridimensionare il calcolo o riprogettare il modello di carico di lavoro.

Una buona domanda di pianificazione è: Si tratta di un picco temporaneo o è la nuova normalità?

I picchi temporanei potrebbero essere buoni candidati per gli scoppi. Gestire la domanda sostenuta con una pianificazione deliberata della capacità.

Premium SSD v2 separa capacità, IOPS e velocità effettiva

Ssd Premium v2 modifica il modello di pianificazione separando le dimensioni del disco, le operazioni di I/O al secondo e la velocità effettiva. Database di Azure per PostgreSQL Flexible Server Premium SSD v2 supporta:

  • Capacità da 32 GB a 64 TB.
  • Fino a 80.000 operazioni di I/O al secondo.
  • Fino a 1.200 MB/s di velocità effettiva.
  • Regolazioni granulari della capacità in incrementi di 1 GB.
  • Configurazione flessibile di IOPS e throughput.
  • Latenza inferiore rispetto all'unità SSD Premium v1.
  • Nessuna memorizzazione nella cache dell'host.

Questa modifica è un cambiamento importante. Con SSD Premium v1, le prestazioni sono più strettamente associate alle dimensioni del disco. Con SSD Premium v2, è possibile configurare le prestazioni in modo più diretto in base alle esigenze del carico di lavoro.

Ad esempio, un database con un numero elevato di operazioni di I/O al secondo potrebbe richiedere operazioni di I/O al secondo elevate senza la necessità di una grande quantità di spazio di archiviazione. Azure Postgres offre operazioni di I/O al secondo e velocità effettiva di base senza costi aggiuntivi, con operazioni di I/O al secondo e velocità effettiva aggiuntive disponibili per costi aggiuntivi. "Offerte di Premium SSD v2:"

  • I dischi fino a 399 GB ricevono un livello di base di 3.000 IOPS e 125 MB/s.
  • I dischi da 400 GB o superiori ricevono un livello base di 12.000 IOPS e 500 MB/s.
  • I dischi possono raggiungere fino a 80.000 IOPS quando dimensionati a almeno 160 GB di spazio disponibile.
  • La velocità effettiva può aumentare fino a 1.200 MB/s.

Ssd Premium v2 è spesso interessante quando è necessario un controllo più preciso sui costi e sulle prestazioni. Invece di ridimensionare la capacità di archiviazione solo per sbloccare le prestazioni, è possibile effettuare il provisioning delle prestazioni in modo più intenzionale.

Ultra Disk (anteprima): classe di prestazioni del disco Azure di fascia alta

Il disco Ultra è l'opzione disco con prestazioni più elevate. Azure Ultra Disk offre livelli di prestazioni fino a:

  • 400.000 IOPS
  • Velocità effettiva di 10.000 MB/s
  • Capacità di 64 TB
  • Obiettivi di progettazione per una latenza sub-millisecondo
  • Capacità, operazioni di I/O al secondo e velocità effettiva configurabili in modo indipendente

L'archiviazione su disco Ultra è progettata per alimentare carichi di lavoro a elevato utilizzo di I/O per database di livello superiore, SAP HANA e sistemi con elevato utilizzo di transazioni. Questa nuova offerta di archiviazione offre prestazioni top-of-the-line per i carichi di lavoro cruciali. Tuttavia, il team deve prendere in considerazione alcune funzionalità di distribuzione chiave, restrizioni di disponibilità a livello di area e opzioni di configurazione durante la pianificazione di una distribuzione:

  • L'aumento automatico dell'archiviazione non è supportato per i server che usano il disco Ultra
  • La crittografia dei dati con chiavi gestite dal cliente non è supportata per i server con disco Ultra
  • I dischi Ultra non supportano la memorizzazione nella cache del disco

È importante comprendere le funzionalità del disco Ultra come parte del panorama delle prestazioni di archiviazione Azure più ampio. Tuttavia, è necessario convalidare la disponibilità del servizio e il supporto per il carico di lavoro specifico Azure Postgres. Rivolgersi al rappresentante Microsoft se l'anteprima del disco Ultra è disponibile per la distribuzione di Azure Postgres.

Il punto pratico: Ultra Disk rappresenta il livello superiore delle prestazioni di archiviazione Azure, ma la progettazione end-to-end di Postgres deve includere combinazioni compatibili per lo SKU di calcolo selezionato, l'area geografica e il livello di rilascio.

La generazione di macchine virtuali è importante: i limiti di archiviazione di calcolo V5 e V6 sono diversi

La generazione di calcolo può influire materialmente sulle prestazioni di archiviazione. Quando si esplora il livello più alto delle prestazioni della memoria Azure, evitare il malinteso che "elevata capacità di calcolo" significhi automaticamente "memoria massima". È necessario verificare che l'SKU di calcolo selezionato sia compatibile con il livello di archiviazione desiderato. Per illustrare questo punto, consideriamo due generazioni di calcolo di dimensioni simili: Ddsv5 e Ddsv6.

La serie Ddsv5 supporta Archiviazione Premium (con memorizzazione nella cache), SSD Premium v2 e Disco Ultra a livello di famiglia di macchine virtuali. Tuttavia, i limiti aggregati di archiviazione remota della macchina virtuale definiscono comunque il limite massimo per ciò che la macchina virtuale può guidare. Ddsv5-series offre prestazioni di archiviazione fino a 80.000 IOPS e 2.600 MB/s.

La serie Ddsv6 offre una capacità di archiviazione superiore, fino a 400.000 IOPS e 12.000 MB/s. Il calcolo della serie V6 offre anche una scalabilità superiore rispetto alle generazioni precedenti, con un massimo di 192 vCPU e 768-GiB di memoria.

Questa modifica generazionale è importante per la progettazione postgres ad alte prestazioni. Se l'architettura di destinazione richiede prestazioni di archiviazione elevate, la scelta di una generazione di calcolo con un limite di archiviazione aggregato inferiore può impedire la distribuzione usando la funzionalità di archiviazione completa.

Esempio: perché l'allineamento end-to-end è importante

Si consideri un carico di lavoro PostgreSQL con un obiettivo di archiviazione aspirazionale di 400.000 IOPS.

A livello di disco, Azure disco Ultra supporta fino a 400.000 operazioni di I/O al secondo per disco. Ssd Premium v2 supporta fino a 80.000 operazioni di I/O al secondo per disco e progettazioni aggregate superiori potrebbero richiedere più dischi o astrazione a livello di piattaforma a seconda del supporto del servizio.

Ma la capacità di archiviazione da sola non è sufficiente.

Una configurazione della serie V5 potrebbe avere un limite di archiviazione inferiore alla destinazione. Come accennato in precedenza, gli SKU della serie V5 supportano fino a 260.000 operazioni di I/O al secondo per la velocità effettiva del disco remoto SSD Premium. In questo caso, la scelta del livello di calcolo della serie V5 per questa destinazione diventa il fattore di limitazione prima che venga raggiunta una destinazione di IOPS di 400.000 operazioni di I/O al secondo.

Al contrario, la documentazione della serie Ddsv6 offre fino a 400.000 operazioni di I/O al secondo e 12.000 MB/s. Ciò rende strategicamente importante la serie V6 e le nuove generazioni per le progettazioni che devono allineare il calcolo e l'archiviazione alle classi con prestazioni di archiviazione più elevate.

La lezione è semplice: le prestazioni massime del database sono una proprietà end-to-end, non una proprietà di sola archiviazione.

Pianifica i cicli economici, non solo la condizione di equilibrio

Molti sistemi non hanno un singolo profilo di prestazioni. Hanno parecchi:

Normale traffico della settimana. Ore lavorative di punta.
Elaborazione di fine mese o trimestre. Domanda di vacanza o stagionale.
Eventi di avvio del prodotto. Finestre di report.
Finestre di manutenzione. Azure Batch periodi di ingestione.
Scenari di backup e ripristino. Eventi di ripristino di emergenza.

Un database ridimensionato per l'utilizzo medio potrebbe avere difficoltà durante i momenti più importanti. Al contrario, un database ridimensionato in modo permanente per un picco di una volta al mese potrebbe essere inutilmente costoso.

La flessibilità di Azure consente ai team di effettuare scelte più sfumate. Per esempio:

  • Usare SSD Premium v2 per regolare le operazioni di I/O al secondo e la velocità effettiva man mano che le esigenze del carico di lavoro si evolvono.
  • Usare le repliche in lettura per scaricare i carichi di lavoro intensivi di lettura, se appropriato.
  • Scalare le risorse di calcolo per periodi di picco noti.
  • Ottimizzate query, indici e pool di connessioni prima di ridimensionare l'infrastruttura.
  • Usare l'osservabilità per identificare se il collo di bottiglia è la CPU, la memoria, l'IOPS, la larghezza di banda, la contesa di blocchi, la pressione di connessione o la progettazione delle query.

La distribuzione migliore non è sempre la distribuzione più grande. Si tratta della progettazione che corrisponde al carico di lavoro e può evolversi in modo sicuro.

L'osservabilità fa parte dell'architettura

La pianificazione delle prestazioni non dovrebbe fermarsi alla distribuzione. I carichi di lavoro Postgres cambiano nel tempo. I dati crescono, i modelli di query cambiano, nuove funzionalità vengono lanciate, il traffico dei clienti cambia, e si accumulano lavori operativi.

Area di monitoraggio Segnali da rivedere
Compute Utilizzo della CPU e utilizzo della memoria.
Connections Connessioni attive, connessioni inattive e comportamento del pool di connessioni.
Queries Durata delle query, modifiche del piano di query e utilizzo dell'indice.
Storage Percentuale di archiviazione, latenza di lettura, latenza di scrittura, utilizzo delle operazioni di I/O al secondo e statistiche sulla velocità effettiva.
Maintenance Gonfiore della tabella, gonfiore dell'indice, caratteristiche WAL, programmazioni di backup e programmazioni di manutenzione.
Replication Ritardo del replica, se pertinente.

Database di Azure per PostgreSQL documentazione evidenzia il monitoraggio del consumo di I/O tramite il portale di Azure o le metriche interfaccia della riga di comando di Azure, tra cui limite di archiviazione, percentuale di archiviazione, spazio di archiviazione usato e percentuale di I/O.

Queste metriche consentono di rispondere alla domanda operativa più importante: quale livello limita effettivamente le prestazioni?

Senza osservabilità, i team potrebbero ridimensionare la cosa sbagliata. Un problema del piano di query potrebbe essere simile a un problema di archiviazione. Le tempeste di connessione potrebbero apparire come pressioni sulla CPU. Un indice mancante potrebbe sembrare come IOPS insufficienti. Un problema di posizionamento client a livello di area potrebbe essere simile alla latenza del database.

Il monitoraggio aiuta i team a apportare modifiche mirate anziché a ipotesi costose.

Elenco di controllo pratico per la pianificazione

Prima di selezionare la configurazione del Database di Azure per PostgreSQL di produzione, acquisire le informazioni seguenti.

Category Pianificazione degli input
Tipo di carico di lavoro OLTP, OLAP, ibrido, reporting, batch e inserimento.
Combinazione di lettura/scrittura Percentuale di letture, scritture, operazioni di I/O casuali e I/O sequenziali.
Prestazioni correnti Operazioni di I/O al secondo di base, velocità effettiva, latenza, CPU, memoria e connessioni.
Prestazioni massime Percentili al 90° e al 99° dei requisiti del carico di lavoro.
Dimensioni dei dati Dimensioni correnti, crescita prevista, utilizzo di oggetti di grandi dimensioni e crescita dell'indice.
Tasso di crescita Proiezioni di archiviazione mensile e annuale nell'arco dell'anno.
Concurrency Sessioni attive, sessioni inattive e comportamento del pool di connessioni.
Cicli di business Picchi giornalieri, settimanali, mensili, stagionali e legati al lancio.
Availability Disponibilità elevata, repliche, ripristino di emergenza, backup, ripristino, obiettivo del punto di ripristino (RPO) e obiettivo del tempo di ripristino (RTO).
Scelta di archiviazione SSD Premium, SSD Premium v2, regioni supportate e funzionalità supportate.
Impatto sulla memorizzazione nella cache Indica se la memorizzazione nella cache dell'host SSD Premium v1 è inferiore a 4 TB.
Creazione di capacità di calcolo Indica se lo SKU selezionato può sostenere le operazioni di I/O al secondo e la velocità di trasmissione necessarie.
Modello di ridimensionamento Ridimensionamento manuale, scalabilità pianificata, regolazione delle prestazioni e repliche.
Observability Metriche, avvisi, informazioni dettagliate sulle query e processo di revisione del carico di lavoro.

Usare i principi seguenti quando si pianificano le distribuzioni di Azure Database per PostgreSQL per il miglioramento delle prestazioni operative.

  • Adatta le dimensioni al tipo di carico di lavoro, non solo alla quantità dei dati.
    Un database da 500 GB può richiedere più operazioni di I/O al secondo rispetto a un database da 5 TB se è altamente transazionale e sensibile alla latenza. Le dimensioni sono importanti, ma il comportamento del carico di lavoro è più importante.
  • Convalidare le risorse di calcolo e archiviazione insieme.
    Non scegliere l'archiviazione solo in base ai limiti del disco. Verificare che lo SKU di calcolo selezionato possa supportare gli IOPS e il throughput necessari.
  • Trattare il limite di caching del Premium SSD da 4 TB come un traguardo del design.
    Le distribuzioni di SSD Premium inferiori a 4 TB possono trarre vantaggio dalla memorizzazione nella cache dell'host. A 4.096 GB e versioni successive, la memorizzazione nella cache dell'host non è supportata. Se la crescita supera tale soglia, pianificare presto il modello di prestazioni futuro.
  • Prendere in considerazione SSD Premium v2 per ottimizzare le prestazioni flessibili.
    Ssd Premium v2 consente un controllo più granulare della capacità, delle operazioni di I/O al secondo e della velocità effettiva. Può essere una soluzione ideale quando le esigenze di prestazioni non si adattano perfettamente alle dimensioni fisse del disco.
  • Usare il bursting per i picchi, non per la domanda continuativa.
    Il bursting può essere utile per i picchi di breve durata, ma il bursting frequente o prolungato indica in genere che la configurazione di base deve essere rivisitata.
  • Abbinare la generazione all'ambizione.
    Per gli obiettivi di prestazioni di fascia alta, le generazioni di calcolo più recenti, ad esempio le serie v6, possono esporre limiti di archiviazione remota più elevati rispetto alle generazioni precedenti per utilizzo generico. Se la destinazione è un'architettura di classe 400.000-IOPS, selezionare la generazione di calcolo di conseguenza.
  • Misurare prima e dopo le modifiche.
    La scalabilità è più semplice nel cloud, ma la misurazione è ciò che rende efficace la scalabilità. Acquisire metriche di base, picco e post-modifica, in modo che le decisioni sulle prestazioni siano basate sulle prove.

Benchmark reale: confrontare le configurazioni di archiviazione in fase di caricamento

I principi descritti in questo articolo non sono teorici. Per illustrare l'interazione tra calcolo, archiviazione e carico di lavoro in pratica, questa sezione riepiloga i pgbench benchmark che confrontano le configurazioni di archiviazione e i livelli di calcolo in condizioni controllate e misurate.

Configurazione e metodologia del benchmark

I benchmark usano pgbench, lo strumento di benchmark PostgreSQL standard, per simulare un carico di lavoro transazionale in cinque diverse configurazioni di archiviazione e calcolo. Il test inizia con 500 connessioni simultanee e aumenta fino a 750 connessioni simultanee dopo un periodo iniziale, mantenendo questo carico di connessione elevato per il resto della finestra di test. Questo modello di ramp-up simula il numero di applicazioni reali che aumentano il carico nel tempo man mano che aumenta il traffico e misura il modo in cui il database risponde al picco iniziale e alla concorrenza elevata sostenuta.

Tutti i benchmark vengono eseguiti in Database di Azure per PostgreSQL server flessibile nella stessa area, all'interno della stessa zona di disponibilità, usando lo stesso database di test e lo stesso profilo del carico di lavoro. Isolando l'archiviazione e il calcolo come variabili, si garantisce che le differenze di prestazioni riflettano le funzionalità effettive della piattaforma anziché la variazione di rete, applicazione o carico di lavoro.

Dettagli della configurazione

Testare cinque configurazioni distinte, variando sia il livello di archiviazione che le dimensioni di calcolo per illustrare i concetti chiave di pianificazione.

Configurazione SKU di calcolo vCores Memory IOPS massimo di calcolo Tipo di archiviazione Capacity IOPS Capacità di produzione
Configurazione 1 Standard_D16ds_v5 16 64 GB 25.600 (40.000 scatto) SSD Premium (P50) 4.095 GB 7,500 250 MB/s
Configurazione 2 Standard_D16ds_v5 16 64 GB 25.600 (40.000 scatto) SSD Premium (P50) 4.096 GB 7,500 250 MB/s
Configurazione 3 Standard_D16ds_v5 16 64 GB 25.600 (40.000 a raffica) SSD Premium (P80) 32 TB 20,000 900 MB/s
Configurazione 4 Standard_D16ds_v5 16 64 GB 25.600 (40.000 scatto) SSD Premium v2 4.095 GB 40,000 1.200 MB/s
Configurazione 5 Standard_D32ds_v5 32 128 GB 51.200 SSD Premium v2 4.095 GB 60.000 1.200 MB/s

Osservazioni chiave dalla progettazione della configurazione:

  • Configurazione 1 e configurazione 2: Queste configurazioni differiscono solo in dimensioni di archiviazione, 4.095 GB rispetto a 4.096 GB. Questo confronto testa il limite di memorizzazione nella cache dell'host per i dischi SSD v1 Premium.
  • Configurazione 2 e configurazione 3: Entrambe le configurazioni usano SSD v1, ma la configurazione 3 viene ridimensionata fino a 32 TB di capacità per sbloccare operazioni di I/O al secondo e velocità effettiva più elevate.
  • Configurazione 3 e configurazione 4: Entrambe le configurazioni usano lo stesso calcolo, ma Config 4 dimostra operazioni di I/O al secondo flessibili e velocità effettiva SSD Premium v2 indipendentemente dalla capacità.
  • Config 4 vs. Config 5: La Configurazione 5 raddoppia il compute SKU per dimostrare come il calcolo di livello superiore sblocchi un maggiore margine di prestazioni per l'archiviazione.

Risultati delle prestazioni

Configurazione 1: 4,095 GB SSD Premium v1 con caching dell'host

Screenshot del grafico che mostra i risultati delle prestazioni per la configurazione 1 con 4.095 GB di archiviazione SSD Premium v1 e memorizzazione nella cache dell'host.

La configurazione 1 utilizza la dimensione Premium SSD v1 da 4.095 GB, che beneficia della memorizzazione nella cache dell'host su Premium SSD v1. Durante il carico di lavoro, questa configurazione ha mantenuto le prestazioni:

  • Numero massimo di operazioni di I/O al secondo: 24.773, con un limite di 7.500 operazioni di I/O al secondo di cui è stato effettuato il provisioning su SSD Premium v1, con la memorizzazione nella cache amplificando le prestazioni efficaci.
  • IOPS massime di lettura: 21.330, con vantaggio dalla cache host per operazioni ad alto volume di lettura.
  • Numero massimo di operazioni di I/O al secondo di scrittura: 7.610.

La memorizzazione nella cache dell'host fornisce un'amplificazione in lettura, quindi gli IOPS effettivi superano momentaneamente il limite di 7.500 IOPS previsti per il disco e raggiungono i limiti di archiviazione del calcolo.

Configurazione 2: 4,096 GB di SSD Premium v1 senza caching dell'host

Screenshot del grafico che mostra i risultati delle prestazioni per la configurazione 2 con 4.096 GB di archiviazione SSD Premium v1 senza memorizzazione nella cache dell'host.

La configurazione 2 utilizza il Premium SSD v1 da 4.096 GB, superando il limite della cache e perdendo i vantaggi della cache dell'host. L'impatto è visibile:

  • Numero massimo di operazioni di I/O al secondo: Operazioni di I/O al secondo effettive inferiori rispetto alla configurazione 1 a causa della perdita di memorizzazione nella cache.
  • Massimo di IOPS di lettura: Riduzione significativa senza cache dell'host.
  • Numero massimo di IOPS di scrittura: 7,610, senza modifiche.

Questa configurazione dimostra l'importanza pratica del limite di memorizzazione nella cache da 4 TB. Passando da 4.095 GB a 4.096 GB, il profilo delle prestazioni cambia rimuovendo le letture memorizzate nella cache. Per i database in crescita che si avvicinano a questa soglia, pianificare in anticipo.

Configurazione 3: SSD Premium da 32 TB v1 con operazioni di I/O al secondo superiori

Screenshot del grafico che mostra i risultati delle prestazioni per la configurazione 3 con archiviazione SSD Premium v1 da 32 TB.

La configurazione 3 risolve i limiti superiori di IOPS e velocità effettiva di SSD Premium v1 ridimensionando fino a 32 TB di capacità. Questa configurazione è stata ottenuta:

  • Numero massimo di operazioni di I/O al secondo: 20.000.
  • Massimo IOPS in lettura: Circa 12.000.
  • Numero massimo di operazioni di I/O al secondo di scrittura: Circa 5.000.

L'aumento della capacità di archiviazione Ssd Premium v1 sottostante aumenta le operazioni di I/O al secondo e la velocità effettiva. È comunque possibile raggiungere i limiti superiori dell'intervallo di archiviazione di calcolo per carichi di lavoro intensivi.

Configurazione 4: SSD Premium v2 con 40.000 operazioni di I/O al secondo

Screenshot del grafico che mostra i risultati delle prestazioni per la configurazione 4 con SSD Premium v2 e 40.000 operazioni di I/O al secondo.

La configurazione 4 illustra la configurazione flessibile delle prestazioni di SSD Premium v2, il provisioning di 40.000 operazioni di I/O al secondo e una velocità effettiva di 1.200 MB/s su 4.095 GB di capacità:

  • Numero massimo di operazioni di I/O al secondo: Maggiore utilizzo effettivo a causa della latenza e della velocità effettiva di SSD Premium v2.
  • Numero massimo di operazioni di I/O al secondo di lettura: Prestazioni migliorate rispetto alle configurazioni Premium SSD v1.
  • Numero massimo di operazioni di I/O al secondo di scrittura: Maggiore capacità di scrittura sostenuta.

L'unità SSD Premium v2 consente il provisioning di elevati IOPS senza richiedere capacità di archiviazione di grandi dimensioni, rendendola efficiente per carichi di lavoro con molte transazioni.

Configurazione 5: SSD Premium v2 con 60.000 IOPS su calcolo D32ds_v5

Screenshot del grafico che mostra i risultati delle prestazioni per la configurazione 5 con SSD Premium v2, 60.000 operazioni di I/O al secondo e D32ds_v5 calcolo.

La configurazione 5 ridimensiona sia le prestazioni di archiviazione, a 60.000 IOPS, sia la potenza di calcolo, utilizzando Standard_D32ds_v5 e 32 vCores. Questa configurazione illustra il principio di allineamento end-to-end:

  • Numero massimo di operazioni di I/O al secondo: Significativamente superiore a tutte le configurazioni precedenti.
  • Numero massimo di operazioni di I/O al secondo di lettura: Miglioramento significativo con margine di calcolo aggiuntivo.
  • Numero massimo di operazioni di I/O al secondo di scrittura: Capacità di scrittura più elevata sostenuta.

Allineando sia il calcolo che l'archiviazione ai livelli di prestazioni più elevati, questa configurazione consente di ottenere la velocità effettiva migliore e la pressione della CPU più bassa. Il limite di archiviazione superiore di D32ds_v5 consente l'uso più completo del disco SSD Premium v2 da 60.000 operazioni di I/O al secondo.

Lezioni dai benchmark

Queste cinque configurazioni illustrano i principi chiave di questo articolo:

  • Il limite di memorizzazione nella cache da 4 TB è importante.
    Le configurazioni 1 e 2 mostrano che la memorizzazione nella cache dell'host fornisce un'amplificazione misurabile delle prestazioni di lettura al di sotto di 4 TB, mentre il superamento dei 4.096 GB elimina tale vantaggio.
  • La capacità non è prestazioni.
    La configurazione 3 ha effettuato il provisioning di 32 TB, ma non ha fornito il più alto numero di IOPS. La capacità di archiviazione da sola non determina la velocità effettiva delle transazioni.
  • Ssd Premium v2 offre un'ottimizzazione flessibile delle prestazioni.
    La quarta configurazione ha dimostrato un'alta quantità di IOPS su una capacità modesta, convalidando il modello disaccoppiato abilitato da Premium SSD v2.
  • Il calcolo e l'archiviazione devono essere allineati.
    La configurazione cinque mostra che massimizzare le prestazioni di archiviazione richiede un margine di calcolo sufficiente. La maggiore capacità di archiviazione di D32ds_v5 era necessaria per utilizzare più completamente il provisionamento di 60.000 IOPS.

I risultati del benchmark convalidano il principio principale: le prestazioni massime sono una proprietà end-to-end. Nessun livello singolo, ad esempio archiviazione, calcolo o rete, determina il risultato. L'esito positivo richiede un allineamento intenzionale tra tutti i livelli, la convalida misurata e l'osservazione continua man mano che i carichi di lavoro si evolvono.

Conclusione

Azure Postgres offre una piattaforma potente e flessibile per la creazione di soluzioni di database moderne e ospitate nel cloud. La progettazione in Azure calcolo, archiviazione, rete, disponibilità elevata, replica, sicurezza e osservabilità consente alcune delle architetture Postgres più efficienti e resilienti disponibili.

Le prestazioni massime non si verificano per caso.

Per ottenere prestazioni operative massime è necessario comprendere l'applicazione, i client, il carico di lavoro, il profilo di crescita dei dati, la combinazione di lettura/scrittura e i cicli di business che modellano la domanda. Richiede anche l'allineamento sia delle scelte di calcolo che di archiviazione, in modo che IOPS, velocità effettiva e obiettivi di latenza siano raggiunti end-to-end.

Ssd Premium v1 può offrire prestazioni prevedibili elevate, soprattutto quando la memorizzazione nella cache dell'host si applica ai dati al di sotto del limite di 4 TB. Premium SSD v2 aggiunge una configurazione delle prestazioni più flessibile disaccoppiando capacità, IOPS e larghezza di banda. Ultra Disk rappresenta la classe di prestazioni più elevata del disco gestito di Azure, mentre le generazioni di calcolo più recenti offrono limiti di archiviazione remota aggregati significativamente più elevati per le architetture avanzate.

Le migliori distribuzioni di Postgres Azure combinano funzionalità della piattaforma con pianificazione intenzionale, monitoraggio continuo e chiara proprietà operativa. Con i requisiti corretti e l'architettura corretta, i team possono offrire esperienze postgres di livello mondiale che offrono prestazioni ottimali.