Questa pagina illustra le best practice generali per aiutarti a migliorare il rendimento, la durabilità e la disponibilità di AlloyDB per PostgreSQL. Questa pagina è rivolta a sviluppatori e amministratori di database che hanno già familiarità con AlloyDB e PostgreSQL.
Configurazione e amministrazione delle istanze
utilizza gli strumenti AlloyDB per monitorare l'utilizzo e lo stato del database.
Segui le linee guida operative.
Configura un periodo di manutenzione per l'istanza principale.
Aggiungi istanze del pool di lettura per scaricare il traffico di lettura.
Gestisci il ritardo nella replica.
Non avviare un'operazione di amministrazione prima del completamento dell'operazione precedente.
Configura una quota di spazio di archiviazione sufficiente per la manutenzione del database di importanza critica.
Evita l'utilizzo eccessivo della CPU.
Evita l'esaurimento della memoria.
Assicurati che l'istanza abbia ID transazione ottimali.
Utilizzare gli strumenti AlloyDB per monitorare l'utilizzo e lo stato del database
Utilizza la seguente tabella per scoprire gli strumenti AlloyDB che ti aiutano a monitorare l'utilizzo, lo stato e le prestazioni del database.
Strumento AlloyDB | Descrizione |
---|---|
Report snapshot delle prestazioni | Confronta gli istantanei delle metriche di sistema tra due diversi punti nel tempo. |
Query Insights | Ti aiuta a rilevare, diagnosticare e prevenire i problemi di prestazioni delle query per i database AlloyDB. Fornisce monitoraggio intuitivo self-service e informazioni diagnostiche che vanno oltre il rilevamento per aiutarti a identificare la causa principale dei problemi di prestazioni. |
Approfondimenti sul sistema | Ti consente di monitorare le risorse e le metriche del database, tra cui il numero di nodi attivi, l'utilizzo della CPU, le connessioni di picco, gli errori di log, le transazioni al secondo e il ritardo massimo della replica. |
Seguire le linee guida operative
Per assicurarti che le tue istanze siano coperte dall'SLA di AlloyDB per PostgreSQL, segui le linee guida operative.
Configura un periodo di manutenzione per l'istanza principale
Configura un periodo di manutenzione per l'istanza principale per pianificare quando possono verificarsi aggiornamenti che causano interruzioni. Per ulteriori informazioni, consulta Visualizzare e impostare i tempi di manutenzione.
Aggiungi istanze del pool di lettura per scaricare il traffico di lettura
Per i workload incentrati sulla lettura, aggiungi istanze del pool di lettura per trasferire il traffico di lettura dall'istanza principale.
Configura uno o più pool di lettura per ogni database nell'istanza per contribuire a migliorare la memorizzazione nella cache.
Valuta la possibilità di aggiungere altri nodi per pool per facilitare il bilanciamento automatico del carico e l'alta disponibilità.
Gestire il ritardo della replica
AlloyDB ha apportato diversi miglioramenti per ridurre il ritardo nella replica. Tuttavia, potresti riscontrare scenari in cui la riproduzione dei log è bloccata o non riesce a tenere il passo, il che può causare un aumento del ritardo nella replica.
Ad esempio, se le dimensioni della VM principale sono molto più grandi di quelle del nodo del pool di lettura, in caso di carichi di lavoro di scrittura elevati la VM principale potrebbe generare record di log più velocemente di quanto i nodi di lettura possano riprodurli, soprattutto se è presente anche un elevato carico di lavoro di lettura in esecuzione contemporaneamente sui nodi di lettura. In questo caso, potrebbe essere utile aumentare le dimensioni del nodo di lettura per assegnare più risorse.
A seconda delle esigenze dell'applicazione, ti consigliamo di modificare i seguenti parametri:
max_standby_streaming_delay
: determina il tempo di attesa della ripetizione prima di annullare le query che la bloccano.google_storage.log_replay_throttle_read_transactions
: determina se limitare le query quando il tempo di latenza è elevato. La limitazione delle query offre più risorse per il recupero più rapido e per evitare di restituire dati obsoleti alle query.alloydb.promote_cancel_to_terminate
: determina se terminare forzatamente i backend delle query che non rispondono all'annullamento.
Non avviare un'operazione di amministrazione prima del completamento dell'operazione precedente
Le istanze AlloyDB non possono accettare nuove richieste di operazioni fino al completamento dell'operazione precedente. Se tenti di avviare una nuova operazione prima del completamento dell'operazione precedente, la richiesta di operazione non va a buon fine. Sono inclusi i riavvii delle istanze.
Lo stato dell'istanza nella console Google Cloud non riflette se un'operazione è in esecuzione. Il segno di spunta verde indica solo se l'istanza è in stato ESEGUIBILE. Per verificare se un'operazione è in esecuzione, fai clic sulla scheda Operazioni e controlla lo stato dell'operazione più recente.
Configura una quota di spazio di archiviazione sufficiente per la manutenzione del database di importanza critica
Per impostazione predefinita, puoi utilizzare fino a 16 TB di spazio di archiviazione per cluster. Se hai bisogno di più spazio di archiviazione, ti consigliamo di aumentare la quota di spazio di archiviazione.
Evitare l'utilizzo eccessivo della CPU
Puoi visualizzare la percentuale di CPU disponibile utilizzata dall'istanza nella pagina dei dettagli dell'istanza nella console Google Cloud . Per ulteriori informazioni, consulta Monitorare le istanze. Puoi anche monitorare l'utilizzo della CPU e ricevere avvisi a una soglia specificata utilizzando la pagina Creare criteri di avviso per soglie di metriche.
Per evitare un utilizzo eccessivo, puoi scalare l'istanza a un numero maggiore di CPU. La modifica delle CPU richiede il riavvio dell'istanza. Se la tua istanza ha già raggiunto il numero massimo di CPU, ti consigliamo di eseguire lo sharding del database in più istanze.
Evitare l'esaurimento della memoria
AlloyDB dispone di una gestione automatica della memoria per evitare problemi di esaurimento della memoria. Tuttavia, un utilizzo intensivo della memoria costante potrebbe causare problemi di prestazioni. Quando cerchi segni di esaurimento della memoria, devi utilizzare principalmente la metrica utilizzo. Per un rendimento ottimale, consigliamo di mantenere questa metrica al di sotto del 90%.
Puoi anche utilizzare la metrica total_usage per osservare la percentuale di memoria disponibile utilizzata dall'istanza AlloyDB, inclusa la memoria utilizzata dal contenitore del database e la memoria allocata dalla cache del sistema operativo.
Osservando la differenza tra le metriche di utilizzo e di utilizzo totale, puoi identificare la quantità di memoria utilizzata dai processi rispetto a quella utilizzata dalla cache del sistema operativo. Puoi riutilizzare il ricordo in questa cache.
Esegui la scalabilità dell'istanza AlloyDB per aumentare le dimensioni della memoria. Per modificare la dimensione della memoria dell'istanza, devi riavviarla. Se la dimensione della memoria massima dell'istanza è già stata raggiunta, devi eseguire lo shard del database su più istanze.
Per saperne di più sul monitoraggio dell'utilizzo e delle metriche relative all'utilizzo totale nella console Google Cloud , consulta Monitorare le istanze.
Assicurati che l'istanza abbia ID transazione ottimali
Puoi visualizzare l'utilizzo dell'ID transazione della tua istanza nella pagina Metrics Explorer della console Google Cloud impostando Resource Type
su AlloyDB for PostgreSQL Database
e Metric
su Percentage of instance's transaction IDs consumed
. Per ulteriori informazioni, consulta Creare grafici con Metrics Explorer.
AlloyDB ha un'autovacuum adattiva integrata che aiuta a ridurre i problemi correlati all'autovacuum.
Architettura dei dati
se possibile, suddividi le istanze di grandi dimensioni in istanze più piccole.
Non utilizzare troppe tabelle di database.
Se possibile, suddividi le istanze di grandi dimensioni in istanze più piccole
Se possibile, utilizza molti cluster AlloyDB più piccoli anziché un'unica istanza di grandi dimensioni. La gestione di un'istanza monolitica di grandi dimensioni presenta delle sfide che non vengono create da un gruppo di istanze più piccole.
Non utilizzare troppe tabelle di database
Mantieni il numero di tabelle dell'istanza inferiore a 10.000. Un numero eccessivo di tabelle del database può influire sul tempo di upgrade del database.
Prestazioni delle query
Abilita il motore colonnare se esegui query analitiche.
Esegui l'upgrade dell'istanza per migliorare le prestazioni delle query.
Esegui il deployment dei pool di lettura e offloada le query di lettura nel pool di lettura.
Attiva il motore colonnare se esegui query di analisi
Leggi una panoramica del motore colonnare AlloyDB. Controlla i tipi di query che traggono vantaggio dall'attivazione del motore colonnare.
Puoi monitorare l'utilizzo del motore colonnare.
Se non hai mai utilizzato il motore a colonne, inizia familiarizzandoti con la colonizzazione automatica. Poi, puoi scegliere di gestire le colonne manualmente.
Esegui l'upgrade dell'istanza per migliorare le prestazioni delle query
Se le prestazioni delle query sono scarse, ti consigliamo di eseguire l'upgrade dell'istanza.
Ogni SKU ha configurazioni limitate di vCPU e memoria, nonché una cache rapida limitata. Se le dimensioni dei dati sono elevate e se stai riscontrando un cattivo rendimento delle query, valuta la possibilità di eseguire l'upgrade a un'istanza più grande.
Esegui il deployment dei pool di lettura e offloada le query di lettura nel pool di lettura
Se la tua applicazione esegue letture e scritture intensive, ti consigliamo di implementare i pool di lettura e di scaricare le query di lettura nel pool di lettura.
Per i workload incentrati sulla lettura, aggiungi istanze del pool di lettura per trasferire il traffico di lettura dall'istanza principale.
Implementazione dell'applicazione
utilizza buone tecniche di gestione delle connessioni.
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione.
Testa la risposta dell'applicazione ai failover.
Evita transazioni di grandi dimensioni.
Evita un numero elevato di transazioni secondarie.
Utilizza la versione più recente di Auth Proxy.
Utilizza buone pratiche di gestione delle connessioni
Utilizza buone pratiche di gestione delle connessioni, come il pooling delle connessioni e il backoff esponenziale.
L'utilizzo di buone tecniche di gestione delle connessioni migliora l'utilizzo delle risorse da parte dell'applicazione e ti aiuta a rispettare i limiti di connessione di AlloyDB.
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione
Testa la risposta della tua applicazione agli aggiornamenti di manutenzione, che possono verificarsi in qualsiasi momento durante il periodo di manutenzione.
Puoi simulare un aggiornamento di manutenzione eseguendo operazioni di scalabilità dell'elaborazione o aggiornando i flag PostgreSQL statici che attivano la manutenzione con tempi di riposo ridotti (LDTM).
Durante l'operazione LDTM, l'istanza non è disponibile per un breve periodo e le connessioni esistenti vengono interrotte. Il test LDTM ti consente di comprendere meglio come la tua applicazione gestisce la manutenzione pianificata e la velocità di recupero del sistema.
Testa la risposta dell'applicazione ai failover
Testa la risposta dell'applicazione ai failover, che possono verificarsi in qualsiasi momento.
Puoi avviare manualmente un failover utilizzando la console Google Cloud , Google Cloud CLI o l'API. Per ulteriori informazioni, consulta la sezione Avvio del failover.
Evitare transazioni di grandi dimensioni
Mantieni le transazioni brevi e piccole. Se è necessario un aggiornamento di grandi dimensioni del database, eseguilo in più transazioni più piccole anziché in un'unica transazione di grandi dimensioni.
Evita un numero elevato di transazioni secondarie
Evita un numero elevato di transazioni secondarie in una transazione quando sono presenti transazioni di lunga durata.
In AlloyDB, l'esecuzione di una transazione in un blocco di errori PL/pgSQL crea sottotransazioni della transazione corrispondente al blocco di errori. Le prestazioni complessive del sistema peggiorano se il numero di transazioni secondarie supera le 64 in presenza di transazioni a lunga esecuzione.
Utilizza la versione più recente di Auth Proxy
Se utilizzi il proxy di autenticazione AlloyDB, assicurati di utilizzare la versione più recente. Per ulteriori informazioni, consulta Mantenere aggiornato il client Auth Proxy.
Importazione ed esportazione di dati
Esegui il ripristino dai backup di Cloud SQL per PostgreSQL per la migrazione.
Velocizza le importazioni per le istanze di piccole dimensioni.
Ripristino dai backup di Cloud SQL per PostgreSQL per la migrazione
Per facilitare la migrazione, consulta Eseguire la migrazione da Cloud SQL per PostgreSQL ad AlloyDB.
Per scoprire come eseguire la migrazione dei dati da Cloud SQL per PostgreSQL ad AlloyDB utilizzando la replica dei dati continua, consulta Database Migration Service per la migrazione da PostgreSQL ad AlloyDB.
Accelerare le importazioni per le istanze di piccole dimensioni
Quando importi set di dati di grandi dimensioni per istanze di piccole dimensioni, puoi aumentare temporaneamente la CPU e la RAM di un'istanza per migliorare le prestazioni.
Backup e ripristino
proteggi i tuoi dati utilizzando le funzionalità di AlloyDB appropriate.
Proteggi l'istanza e i backup dall'eliminazione accidentale.
Proteggi i tuoi dati utilizzando le funzionalità AlloyDB appropriate
Utilizza i backup, il recupero point-in-time (PITR) e le esportazioni per la ridondanza e la protezione. Ognuno protegge da scenari diversi e si completano a vicenda in una strategia di protezione dei dati solida.
I backup sono leggeri e consentono di ripristinare i dati dell'istanza allo stato al momento del backup. Tuttavia, la funzionalità di backup di AlloyDB presenta alcune limitazioni. Se elimini l'istanza, vengono eliminati anche i backup. Non puoi eseguire il backup di un singolo database o di una singola tabella. Inoltre, se la regione in cui si trova l'istanza non è disponibile, non puoi ripristinare l'istanza da quel backup, nemmeno in una regione disponibile.
Il recupero point-in-time ti aiuta a recuperare un'istanza in un momento specifico. Ad esempio, se un errore causa una perdita di dati, puoi ripristinare lo stato di un database prima che si verifichi l'errore. Un recupero point-in-time crea sempre una nuova istanza. Non puoi eseguire un recupero point-in-time in un'istanza esistente.
La creazione delle esportazioni richiede più tempo perché in Cloud Storage viene creato un file esterno che può essere utilizzato per ricreare i dati. Le esportazioni non sono interessate se elimini l'istanza. Inoltre, puoi esportare un solo database o una sola tabella, a seconda del formato di esportazione.
Proteggi l'istanza e i backup dall'eliminazione accidentale
Per attivare la prevenzione dell'eliminazione accidentale predefinita, crea un'istanza AlloyDB utilizzando la console Google Cloud o Terraform.
Utilizza la funzionalità di esportazione in AlloyDB per esportare i dati per una protezione aggiuntiva. Utilizza Cloud Scheduler con l'API Cloud Scheduler per automatizzare la gestione delle esportazioni.
Per scenari più avanzati, utilizza Cloud Scheduler con le funzioni Cloud Run per l'automazione.