Per ottimizzare il throughput, la latenza e l'alta affidabilità dei tuoi workload AlloyDB per PostgreSQL, puoi dimensionare ed eseguire il deployment delle istanze del pool principale e di lettura per i workload di elaborazione delle transazioni online (OLTP), elaborazione analitica online (OLAP) ed elaborazione analitica e transazionale ibrida (HTAP).
Panoramica
Per aiutarti a ottenere prestazioni migliori del database, AlloyDB per PostgreSQL offre le seguenti funzionalità integrate:
- Gestione automatica della memoria
- Autovacuum adattivo
- Impostazioni delle prestazioni integrate ottimizzate
- Ritardo della replica basso
- Manutenzione senza interruzioni con tempi di inattività inferiori a un secondo per il nodo primario e nessun tempo di inattività per i nodi del pool di lettura durante le operazioni di scalabilità
L'ottimizzazione delle prestazioni dell'istanza AlloyDB per PostgreSQL include la gestione di quanto segue:
- Dimensionamento corretto delle istanze principali e del pool di lettura
- Aggiornamento dei flag che influiscono sulle prestazioni
Considerazioni sul dimensionamento
Prima di dimensionare l'istanza AlloyDB per PostgreSQL, determina quanto segue:
- Tipo di workload: OLTP, OLAP o HTAP
- Requisiti di prestazioni: requisiti di latenza e throughput
- Dimensioni dei dati previste: le dimensioni dei dati che prevedi di archiviare in AlloyDB per PostgreSQL e le dimensioni del set di dati attivo
- Scala del workload: un aumento o una crescita delle dimensioni dei dati nel tempo
Carichi di lavoro OLTP
Puoi eseguire il deployment del database AlloyDB per PostgreSQL come istanza di zona (nodo singolo) o come istanza ad alta affidabilità (due nodi in ogni zona). Se vuoi, puoi anche aggiungere istanze del pool di lettura e un cluster secondario in un'altra regione per workload distribuiti geograficamente o per il ripristino di emergenza (RE).
Il deployment di AlloyDB per PostgreSQL viene eseguito utilizzando un'architettura distribuita su scala cloud con computing e spazio di archiviazione disaggregati. Le scritture vengono confermate non appena i file dei log write-ahead (WAL) vengono salvati in modo permanente nello spazio di archiviazione regionale, mentre la materializzazione dei blocchi viene trasferita allo spazio di archiviazione.
Allo stesso modo, con l'architettura di cache multilivello, i dati vengono posizionati automaticamente tra la cache del buffer, la cache ultraveloce e il motore di archiviazione intelligente. A causa di questa architettura di cache multilivello utilizzata in AlloyDB per PostgreSQL, le operazioni di input e output al secondo (IOP) non sono rilevanti nel contesto di AlloyDB per PostgreSQL per il confronto con altri sistemi di database.
Tuttavia, l'utilizzo di transazioni al secondo (TPS)/transazioni al minuto (TPM) può fornire un confronto significativo per comprendere la quantità di dati che possono essere gestiti da AlloyDB per PostgreSQL.
La metrica di dimensionamento principale è TPS. Per stimare le dimensioni richieste di AlloyDB per PostgreSQL, segui questi passaggi:
- Identifica il tuo workload esistente. Se esegui la migrazione da PostgreSQL autogestito o da altri database commerciali, potresti già avere il valore TPS per il tuo workload esistente.
- Analizza le query. Identifica le query più critiche nel tuo workload e determina i relativi requisiti di prestazioni.
- Utilizza uno strumento come
HammerDBopgbench. Questi strumenti aiutano a eseguire il benchmark di AlloyDB per PostgreSQL e a determinare se le dimensioni della macchina soddisfano i requisiti di TPS. - Utilizza la guida al benchmarking OLTP di AlloyDB per PostgreSQL. Questa guida fornisce i dati sul rendimento per varie configurazioni di AlloyDB per PostgreSQL, per trovare una configurazione che soddisfi i tuoi requisiti di TPS.
- Scegli una dimensione appropriata di AlloyDB per PostgreSQL. Considera le dimensioni attuali dei dati e le aspettative di crescita future.
Linee guida sulle dimensioni delle macchine
La seguente tabella di esempio mostra i suggerimenti per i dati con benchmarking TPC-C che hanno un rapporto di lettura/scrittura di circa il 65% di letture e il 35% di scritture. Quando dimensioni un'istanza AlloyDB per PostgreSQL, devi puntare a un utilizzo della CPU in stato stabile di circa il 60-70% per evitare l'overhead di pianificazione del sistema operativo. In questo modo, viene lasciato un certo margine per i picchi di utilizzo delle risorse da parte delle applicazioni client.
Utilizza i suggerimenti per il dimensionamento nella tabella seguente come linee guida generali.
Per scoprire il numero massimo di max_connections consigliato per ogni dimensione della macchina, consulta Numero massimo di connessioni simultanee.
| vCPU/memoria | Intervallo di transazioni/sec consigliato (30% memorizzato nella cache) |
Dimensione dei dati di lavoro consigliata: (dimensione totale fino a 128 TB) |
|---|---|---|
| 2 / 16GB | Fino a 1000 | Fino a 100 GB |
| 4 / 32GB | Fino a 2500 | Fino a 250 GB |
| 8/ 64GB | Fino a 4000 | Fino a 500 GB |
| 16 / 128GB | Fino a 8000 | Fino a 1 TB |
| 32 / 256GB | Fino a 14.000 | Fino a 3 TB |
| 64 / 512GB | Fino a 20.000 | Fino a 8 TB |
| 96 / 768GB | Fino a 25.000 | Fino a 16 TB |
| 128 / 864GB | Più di 20.000 | Fino a 32 TB |
Tipi di deployment
In base al tuo workload, puoi eseguire il deployment di AlloyDB per PostgreSQL solo come istanza principale o come istanza principale con istanza del pool di lettura.
Solo principale
Scegli il deployment solo principale per i seguenti workload:
- Scrittura elevata con letture medio-basse
- Query con un numero elevato di letture e un numero ridotto di scritture
- Lettura/scrittura OLTP tipica (60-70% di letture, 30-40% di scritture).
Per ulteriori informazioni sui tipi di macchine, consulta le linee guida generali sulle dimensioni delle macchine.
Istanza principale con pool di lettura
Se scegli di eseguire il deployment di un'istanza principale con pool di lettura, tieni presente quanto segue:
- Se hai letture sensibili alla latenza, valuta la possibilità di eseguire l'offload delle query di lettura alle istanze del pool di lettura. Puoi configurare fino a 20 nodi in tutte le istanze del pool di lettura. Per saperne di più, consulta Crea un'istanza del pool di lettura.
- Configura più istanze del pool di lettura se hai più di un database, ad esempio CRM o Finance nella stessa istanza. L'utilizzo di questa strategia contribuisce a migliorare l'efficacia della memorizzazione nella cache e le prestazioni delle query.
- Puoi dimensionare le istanze principali e del pool di lettura in modo diverso in base ai tuoi requisiti. Per ulteriori informazioni sulle best practice per le istanze del pool di lettura, consulta Best practice per migliorare le prestazioni e la disponibilità di AlloyDB.
- Aggiungi più di un nodo per istanza del pool di lettura per l'alta affidabilità.
- Abilita il motore colonnare in modo selettivo in istanze di pool di lettura specifiche per le prestazioni delle query di lettura. Non è necessario attivare il motore colonnare nell'istanza principale.
Workload OLAP
Per i workload OLAP, la metrica di dimensionamento principale è il rendimento delle query, in particolare le query che richiedono scansioni o aggregazioni di tabelle complete. AlloyDB per PostgreSQL include un motore colonnare integrato che aiuta ad accelerare le query analitiche. L'attivazione del motore colonnare per impostazione predefinita consuma il 30% della memoria e utilizza automaticamente i dati della cache ultraveloce.
Per ulteriori informazioni sulla misurazione delle prestazioni OLAP con AlloyDB per PostgreSQL utilizzando il workload TPC-H, consulta la guida al benchmarking OLAP di AlloyDB per PostgreSQL.
Tipi di deployment
In base al tuo workload, puoi eseguire il deployment di AlloyDB per PostgreSQL solo come istanza principale o come istanza principale con istanza del pool di lettura.
Solo principale
Se esegui il deployment di un'istanza solo principale, tieni presente quanto segue:
- Utilizza questo deployment per le transazioni con query analitiche (HTAP).
- Abilita il motore colonnare per facilitare le query OLAP.
- Valuta la possibilità di eseguire il deployment con una macchina con almeno 16 vCPU che fornisca più memoria per archiviare i dati colonnari.
Principale con pool di lettura
Se esegui il deployment di un'istanza principale con pool di lettura, tieni presente quanto segue:
- Se hai scritture intensive e letture analitiche sensibili alla latenza con requisiti di ritardo ridotto, esegui il deployment dell'istanza principale con l'alta affidabilità abilitata e con istanze del pool di lettura.
- Abilita il motore colonnare nelle istanze del pool di lettura in cui esegui le query analitiche.
- Configura più istanze del pool di lettura se hai più di un database, ad esempio CRM o Finance nella stessa istanza. L'utilizzo di questa strategia contribuisce a migliorare l'efficacia della memorizzazione nella cache e le prestazioni delle query.
- Puoi dimensionare le istanze principali e del pool di lettura in modo diverso in base ai tuoi requisiti. Per ulteriori informazioni sulle best practice per le istanze del pool di lettura, consulta Best practice per migliorare le prestazioni e la disponibilità di AlloyDB.
- Aggiungi più di un nodo per istanza del pool di lettura per l'alta affidabilità.
- Abilita il motore colonnare in modo selettivo in istanze di pool di lettura specifiche per le prestazioni delle query di lettura. Non è necessario attivare il motore colonnare nell'istanza principale.