Questa pagina fornisce una strategia per pianificare ed eseguire una proof of concept (POC) con Spanner. Fornisce riferimenti e approfondimenti su aspetti cruciali di un POC, come configurazione dell'istanza, progettazione dello schema, caricamento dei dati e valutazione delle prestazioni. Evidenzia i passaggi essenziali per valutare le funzionalità di Spanner e ti aiuta a identificare potenziali rischi e vantaggi legati all'adozione di Spanner.
Oltre a convalidare le funzionalità tecniche di Spanner, una POC ha due scopi:
- Per aiutarti a comprendere i vantaggi offerti da Spanner per il tuo caso d'uso
- Per aiutarti a identificare i rischi associati all'adozione di Spanner
Una POC di Spanner comprende una serie di aspetti di valutazione, ciascuno personalizzato per soddisfare i tuoi obiettivi tecnici e commerciali specifici, come mostrato nel seguente diagramma.
Le linee guida contenute in questo documento ti aiutano a valutare ciascuna di queste aree.
Rendimento e scalabilità ti aiuta a capire in che modo Spanner gestisce carichi di lavoro specifici, requisiti di latenza e l'impatto di varie configurazioni delle istanze. Questi test possono dimostrare la capacità di Spanner di scalare senza problemi.
Le funzionalità di monitoraggio ti aiutano a valutare se Spanner fornisce le informazioni necessarie per operazioni di database efficaci. Questa valutazione include:
- Opzioni per analizzare i piani di esecuzione delle query
- Utilizzo delle risorse di sistema
- Opzioni per la configurazione degli avvisi
Una prova di concetto può rivelare lacune che devono essere colmate per ottimizzare completamente l'efficienza operativa.
Sicurezza e conformità sono fondamentali per determinare l'idoneità di Spanner per la tua organizzazione. Ciò include valutazioni per garantire che Spanner possa mitigare i rischi per la sicurezza offrendo al contempo solidi vantaggi in termini di conformità, ad esempio:
- Opzioni di crittografia, come CMEK o EKM per i dati in transito e at-rest
- Postura di controllo dell'accesso con privilegi minimi
- Audit logging
- Rispetto dei requisiti normativi
Le funzionalità di backup e ripristino di emergenza (RE) sono essenziali per garantire la resilienza operativa e dei dati. Una POC può convalidare le funzionalità di RE di Spanner, come il recupero point-in-time e la disponibilità.
La fattibilità della migrazione comporta la comprensione della complessità della transizione dalla soluzione di database attuale a Spanner. La valutazione della compatibilità dello schema, degli strumenti di migrazione e delle modifiche all'applicazione ti aiuta a quantificare gli investimenti necessari e a determinare i rischi e i vantaggi dell'adozione di Spanner.
Durante la valutazione, ti consigliamo di esplorare il set di funzionalità di Spanner per assicurarti che soddisfi i requisiti funzionali della tua applicazione. Ciò potrebbe includere il test della coerenza globale, delle funzionalità di query SQL o dell'integrazione con altri servizi Google Cloud.
Sebbene le valutazioni possano evidenziare i punti di forza unici di Spanner, come la coerenza tra le regioni, possono anche rivelare potenziali rischi, come gli sforzi di integrazione con l'architettura dell'applicazione esistente.
Ciclo di vita delle attività POC
Questa prova di concetto ti guida attraverso i seguenti passaggi. Segui i consigli riportati in questo documento per configurare e valutare Spanner per il tuo caso d'uso specifico.
Pianificare la POC
La base di una POC efficace consiste nel definire obiettivi chiari e misurabili che siano in linea con le priorità tecniche e commerciali. Evita obiettivi vaghi come esplorare il potenziale di Spanner, in quanto spesso portano a sforzi poco mirati e risultati ambigui. Collega invece gli obiettivi della POC a target concreti, come raggiungere una disponibilità del 99,999%, ridurre i tempi di inattività o scalare per gestire un aumento del 200% del throughput mantenendo le latenze delle transazioni al di sotto di 20 ms.
L'architettura unica di Spanner è ideale per i carichi di lavoro che richiedono una scalabilità massiccia, quindi valutare la scalabilità per il tuo caso d'uso è un buon punto di partenza. Gli scenari di test devono includere:
- Gestione dei carichi operativi tipici
- Gestione dei picchi di traffico
- Ridimensionamento efficiente
Questi test ti aiutano a capire le prestazioni di Spanner in diverse condizioni e se soddisfa i tuoi requisiti tecnici di scalabilità. Obiettivi specifici e attuabili non solo aiutano a strutturare la POC, ma creano anche una base solida per valutare il successo.
Definisci una griglia di valutazione quantificata
Una rubrica costituita da metriche chiare e misurabili e da criteri di successo discreti è essenziale per stabilire se la POC ha raggiunto i suoi obiettivi. Ad esempio, anziché testare solo il rendimento, devi specificare anche obiettivi come:
- Servire QPS (query al secondo) specifici a livello di produzione
- Mantenere latenze inferiori a 20 ms con carichi di picco predefiniti
- Gestisci picchi di traffico chiaramente definiti senza degradare le prestazioni
Criteri ben definiti ti aiutano a valutare Spanner in modo oggettivo per il tuo carico di lavoro e forniscono informazioni utili per i passaggi successivi. Sii specifico e definisci i target percentili per la latenza delle operazioni di lettura e scrittura (ad esempio p50 e p95). Una definizione chiara delle soglie di latenza accettabili ti aiuta a progettare test delle prestazioni di Spanner in linea con le esigenze della tua attività.
Un esempio di rubrica di valutazione potrebbe essere il seguente:
Aspetto della valutazione | Criteri di successo |
Disponibilità | 99,999% |
Sicurezza | CMEK con un EKM richiesto |
Garanzia di Recovery Point Objective (RPO) in caso di interruzione a livello di regione | 0 |
Limite di latenza per le transazioni più critiche | p50 inferiore a 20 ms |
Latenza per le nostre query più importanti rivolte agli utenti | p50 inferiore a 100 ms |
Scalabilità | Dimostra che è possibile aumentare la scalabilità da 10.000 transazioni al secondo a 100.000 transazioni al secondo con una latenza p50 inferiore a 20 ms nell'arco di un'ora |
Definisci l'ambito dei casi di valutazione
Una POC non deve richiedere una migrazione su larga scala. Concentrati invece sul test di carichi di lavoro rappresentativi o di componenti critici del sistema. Ad esempio, identifica le query chiave, le forme delle transazioni critiche o i flussi di lavoro specifici basati sui dati che sono fondamentali per le tue operazioni. Restringi l'ambito per ridurre la complessità, assicurandoti al contempo che i risultati siano pertinenti e significativi. Questo approccio fornisce un modo gestibile per valutare le funzionalità di Spanner senza essere sopraffatto dalle complessità di una migrazione dell'intero sistema.
Scegli una configurazione dell'istanza di Spanner
Quando crei un'istanza Spanner a scopo di valutazione, scegli una configurazione dell'istanza che soddisfi i requisiti aziendali per la posizione geografica e lo SLA di disponibilità del servizio. Spanner offre varie configurazioni, tra cui a regione singola, multiregionale e a due regioni. Ogni configurazione è progettata per soddisfare diversi requisiti di latenza, disponibilità e ridondanza.
- Le configurazioni a singola regione archiviano i dati in una regione Google Cloud, offrendo bassa latenza all'interno di questa regione ed economicità. Queste topologie sono ideali per i carichi di lavoro che richiedono la ridondanza zonale all'interno della regione, che offre una disponibilità del 99,99%.
- Le configurazioni a due regioni replicano i dati in due regioni di un singolo paese con una replica di controllo in ogni regione per i failover. Questa configurazione offre una disponibilità maggiore (99,999%) e tolleranza agli errori rispetto a una configurazione a singola regione. Queste topologie sono adatte a carichi di lavoro con requisiti di conformità rigorosi (ad esempio residenza dei dati) o di prossimità geografica.
- Le configurazioni multiregionali replicano i dati in più regioni, garantendo una disponibilità e una resilienza molto elevate in caso di interruzioni a livello regionale. Queste topologie sono ideali per le applicazioni che richiedono la ridondanza geografica con una disponibilità fino al 99,999%.
Considerazioni sulla latenza nelle istanze tra regioni
Nelle configurazioni a due regioni e multiregionali, la distribuzione geografica delle repliche Spanner può influire sulla latenza. La latenza di scrittura dipende dalla vicinanza della regione leader, che coordina le transazioni di lettura-scrittura, e delle altre regioni, che confermano ogni operazione di scrittura. Il posizionamento delle risorse di calcolo dell'applicazione vicino alla regione leader riduce i ritardi di andata e ritorno e minimizza la latenza.
Puoi modificare la regione leader di un database in base alle esigenze della tua applicazione. Per le operazioni di sola lettura, Spanner può eseguire letture non aggiornate dalla replica più vicina, riducendo la latenza, mentre le letture coerenti potrebbero coinvolgere la regione leader, aumentando potenzialmente la latenza dell'operazione. Per ottimizzare la latenza nelle configurazioni multiregionali, scegli strategicamente la regione leader, posiziona le risorse di calcolo per i tuoi servizi nella regione leader e sfrutta le letture non aggiornate per i workload di lettura più gravosi.
Configurazioni che soddisfano i requisiti della tua applicazione
Quando selezioni una configurazione dell'istanza per la tua applicazione, prendi in considerazione fattori come disponibilità, latenza e requisiti di residenza dei dati. Ad esempio, se la tua applicazione richiede risposte a bassa latenza per gli utenti in una specifica area geografica, un'istanza regionale potrebbe essere sufficiente. Tuttavia, per le applicazioni che richiedono una disponibilità maggiore o che servono utenti distribuiti a livello globale, le configurazioni multiregionali sarebbero più appropriate.
Inizia con una configurazione che si allinei strettamente ai requisiti di produzione della tua applicazione per valutare le prestazioni. Tieni presente che la latenza e i costi variano a seconda delle configurazioni, quindi adatta l'ambiente POC in modo che rifletta le esigenze del tuo caso d'uso. Per i deployment multiregionali, simula la distribuzione geografica dei servizi e testa la latenza per assicurarti che la configurazione sia in linea con i requisiti di produzione. Per maggiori dettagli, consulta la guida al posizionamento del leader multiregionale di Spanner.
Dimensionamento di Spanner
Esegui il provisioning della capacità di calcolo iniziale per l'istanza Spanner per assicurarti che possa gestire in modo efficace il carico di lavoro di valutazione durante il POC. Le dimensioni iniziali dell'istanza devono corrispondere al workload previsto, tenendo conto del mix di query di lettura e scrittura al secondo (QPS), della complessità delle query e dei livelli di concorrenza.
Partire da un'ipotesi ragionevole ti consente di stabilire una base di riferimento e aumentare gradualmente la spesa in base al rendimento osservato. Puoi utilizzare le indicazioni sul dimensionamento dei benchmark di riferimento di Spanner per stabilire una configurazione di base dell'istanza.
Il dimensionamento durante una POC deve essere iterativo. Inizia con una configurazione iniziale, quindi monitora le metriche chiave come la latenza e l'utilizzo della CPU e regola la capacità di calcolo assegnata in base alle esigenze. In questo modo, puoi convalidare le funzionalità di scalabilità e prestazioni di Spanner replicando condizioni simili a quelle del tuo ambiente di produzione.
I modelli di carico di lavoro tipici, come il traffico costante rispetto alla domanda fluttuante, devono influenzare il tuo approccio al dimensionamento. Quando abiliti la scalabilità automatica, Spanner esegue il provisioning dinamico della capacità delle risorse di calcolo in base all'intensità del carico di lavoro.
Progettazione dello schema
La progettazione dello schema è un aspetto fondamentale di una POC Spanner perché il modo in cui organizzi i dati può influire direttamente sulle prestazioni e sulla scalabilità.
Uno schema ben progettato è fondamentale per dimostrare le funzionalità di Spanner in un POC. I test di carico spesso rivelano potenziali colli di bottiglia o inefficienze, fornendo informazioni per perfezionamenti iterativi che creano uno schema ottimale.
Progettare per la scalabilità
Quando crei uno schema di database per Spanner, è essenziale tenere conto della sua architettura distribuita. Alcune considerazioni e ottimizzazioni chiave includono:
- Chiavi primarie:scegli chiavi primarie che distribuiscano i dati in modo uniforme nello spazio delle chiavi, evitando chiavi che aumentano monotonicamente come i timestamp che potrebbero causare hotspot nelle suddivisioni.
- Indici:progetta indici per ottimizzare le prestazioni delle query tenendo conto del loro impatto sulle prestazioni di scrittura e sui costi di archiviazione. Troppi indici o indici pianificati male potrebbero introdurre un sovraccarico non necessario.
- Interleaving delle tabelle:utilizza l'interleaving delle tabelle per ottimizzare i pattern di accesso per i dati correlati. Ciò potrebbe ridurre la comunicazione tra processi e migliorare l'efficienza delle query.
Consulta le best practice per la progettazione dello schema Spanner per evitare le insidie più comuni e progettare uno schema che supporti prestazioni elevate e scalabilità.
Puoi creare uno schema bozza nella console Google Cloud come mostrato nell'immagine seguente.
Migrazione dello schema con lo strumento di migrazione di Spanner
Lo strumento di migrazione Spanner (SMT) può semplificare la creazione dello schema durante la migrazione da database relazionali, inclusi MySQL o PostgreSQL. SMT automatizza la generazione dello schema e include ottimizzazioni di base, come suggerimenti per indici e modifiche allo schema. Sebbene SMT fornisca un buon punto di partenza, spesso sono necessari perfezionamenti manuali per allineare lo schema ai tuoi casi d'uso o pattern di carico di lavoro specifici.
Utilizzare un processo di progettazione dello schema iterativo
Sebbene uno schema iniziale fornisca un punto di partenza, è improbabile che sia perfetto. La creazione dello schema per una POC non è un'attività una tantum, ma un processo iterativo che si evolve man mano che acquisisci informazioni dai test. Uno schema solido è essenziale per le prestazioni dell'applicazione. Per ottenerlo, è necessario un progetto iniziale ben ponderato, l'utilizzo di strumenti come SMT e un perfezionamento iterativo basato sui risultati dei test di carico. Seguendo questa procedura, puoi assicurarti che lo schema soddisfi efficacemente le esigenze della tua applicazione. Scoprirai anche come sfruttare al meglio le funzionalità di Spanner.
Caricamento dei dati
Una POC di Spanner riuscita si basa sul caricamento di dati rappresentativi nel database per convalidare la progettazione dello schema e simulare i flussi di lavoro delle applicazioni. Esistono diversi strumenti consigliati che possono semplificare questo processo. Per caricare i tuoi dati, Spanner offre le seguenti opzioni:
- L'estrazione, trasformazione e caricamento (ETL) inversi di BigQuery in Spanner è un meccanismo di caricamento dei dati integrato e facile da usare che ti consente di utilizzare trasformazioni basate su SQL per caricare i dati in Spanner. Questo metodo è ideale per un'ampia gamma di formati di dati, inclusi i dati semistrutturati come JSON.
- Per i database relazionali come MySQL e PostgreSQL, lo strumento di migrazione Spanner (SMT) automatizza la creazione dello schema, la mappatura dei tipi di dati e il caricamento collettivo dei dati.
- Per i formati flat file, Google fornisce modelli Dataflow per CSV in Spanner e Avro in Spanner per creare definizioni di schema manuali per il caricamento collettivo dei dati. Per i database compatibili con JDBC, Google fornisce il modello Dataflow da JDBC a Spanner.
Per ulteriori informazioni su queste opzioni, vedi Utilizzare i propri dati.
Se non sono disponibili dati di esempio, puoi utilizzare strumenti di generazione di dati sintetici come JMeter di Machmeter e QuickPerf per creare set di dati personalizzati in base allo schema e al caso d'uso. Per saperne di più, vedi Generare dati di esempio.
Porta i tuoi dati
Se hai dati di esempio disponibili che vuoi utilizzare per la prova di concetto, hai diverse opzioni per caricarli in Spanner.
Origine | Strumento | Creazione dello schema | Trasformazioni | Dimensioni dei dati |
MySQL | SMT | automatico | Solo conversione del tipo di dati | small |
PostgreSQL | SMT | automatico | Solo conversione del tipo di dati | small |
Qualsiasi JDBC | JDBC to Spanner | manuale | Solo conversione del tipo di dati | grande |
CSV | CSV a Spanner | manuale | Solo conversione del tipo di dati | grande |
ETL inversa di BigQuery | manuale | Trasformazioni complesse supportate | grande | |
Avro | Da Avro a Spanner | manuale | Solo conversione del tipo di dati | grande |
ETL inversa di BigQuery | manuale | Trasformazioni complesse supportate | grande | |
JSON | ETL inversa di BigQuery | manuale | Trasformazioni complesse supportate | grande |
ETL inversa di BigQuery in Spanner
BigQuery reverse ETL to Spanner ti consente di importare rapidamente un'ampia gamma di origini dati e trasformarle in tabelle BigQuery utilizzando SQL. Puoi quindi esportare i dati dalla tabella BigQuery in una tabella Spanner. È particolarmente utile per i dati semistrutturati, come JSON, che spesso provengono da esportazioni da origini dati NoSQL. BigQuery dispone del rilevamento automatico dello schema, mentre la creazione dello schema Spanner è manuale e richiede di definire lo schema prima di caricare i dati.
Strumento di migrazione di Spanner
Per avviare rapidamente la tua POC, puoi utilizzare lo strumento di migrazione Spanner (SMT) per eseguire la migrazione dei dati dalle origini MySQL e PostgreSQL a Spanner. SMT automatizza il processo di creazione dello schema, mappando i tipi di dati dal database di origine ai tipi equivalenti in Spanner. Fornisce anche consigli per l'ottimizzazione dello schema specifici per Spanner. Ciò lo rende particolarmente utile per le migrazioni semplici in cui la conversione automatica dello schema è sufficiente.
SMT fornisce un'interfaccia utente che ti guida nel processo di migrazione. Durante questo processo, selezioni il database di origine ed esamini i consigli e le opzioni per la progettazione dello schema.
Modelli Dataflow
Dataflow è un servizio completamente gestito progettato per l'elaborazione dei dati scalabile, il che lo rende una scelta adatta per il caricamento di grandi quantità di dati.
Google fornisce i seguenti modelli open source per i pattern di caricamento comuni:
- CSV to Spanner carica i dati dai file CSV archiviati in Cloud Storage in Spanner.
- Avro to Spanner carica i file di dati Avro esistenti da Cloud Storage.
- Da JDBC a Spanner carica i dati dai database che supportano JDBC.
Ciascuno di questi modelli richiede la creazione manuale dello schema Spanner prima di iniziare il caricamento dei dati.
Dataflow esegue automaticamente lo scale out per adattarsi a set di dati di qualsiasi dimensione, garantendo l'importazione dati ad alte prestazioni in Spanner, anche per set di dati su scala di terabyte. Questa scalabilità viene fornita a scapito di alcuni compromessi:
- Le pipeline Dataflow richiedono la configurazione manuale per definire lo schema, il mapping dei dati e i parametri di esecuzione per un'esecuzione ottimale.
- Dataflow offre la flessibilità e la potenza necessarie per le migrazioni di dati su larga scala, ma potrebbe richiedere più impegno per la configurazione e la gestione rispetto ad altri strumenti.
Generare dati di esempio
Se non hai dati di esempio, ma hai in mente un caso d'uso specifico, puoi modellare lo schema in base ai tuoi requisiti e utilizzare strumenti per generare set di dati rappresentativi. Questi strumenti ti consentono di popolare Spanner con dati significativi per convalidare la progettazione dello schema e i flussi di lavoro dell'applicazione.
JMeter da Machmeter
JMeter di Machmeter fornisce esempi che utilizzano JMeter per generare dati di esempio per Spanner. L'attenzione di Machmeter agli esempi basati su casi d'uso lo rende un ottimo punto di partenza per generare pattern di dati strutturalmente simili allo schema di produzione previsto. Gli esempi forniti includono script per inserimenti collettivi e altre operazioni. Puoi adattare gli script per generare set di dati sintetici su larga scala. Per saperne di più, consulta il repository o la documentazione di Machmeter.
QuickPerf
QuickPerf viene distribuito con il driver JDBC di Spanner. QuickPerf fornisce script basati su SQL che creano rapidamente set di dati rappresentativi per testare l'integrità dello schema e il comportamento del database. Si tratta di una scelta semplice per generare rapidamente set di dati di piccole e medie dimensioni meno complessi.
Test di carico
Il test di carico ti consente di osservare le prestazioni di Spanner durante la gestione dei carichi di lavoro per assicurarti che il database abbia la configurazione ottimale per le esigenze di produzione. Due strumenti introdotti in precedenza, JMeter di Machmeter e QuickPerf, sono particolarmente efficaci per simulare i carichi di lavoro e misurare le metriche di rendimento, come velocità effettiva, latenza e utilizzo delle risorse.
Apache JMeter, migliorato grazie al progetto Machmeter, fornisce un potente framework per il test di carico distribuito con Spanner. Machmeter include configurazioni JMeter predefinite progettate specificamente per simulare i workload Spanner. Queste configurazioni possono essere personalizzate per eseguire query, transazioni e operazioni batch rappresentative, consentendoti di misurare il rendimento di Spanner in diversi scenari.
La capacità di JMeter di simulare utenti e transazioni simultanei lo rende una buona scelta per testare la scalabilità e la resilienza della tua istanza Spanner. Puoi eseguire il deployment di JMeter in modalità distribuita utilizzando Kubernetes o il servizio gestito GKE per scalare l'ambiente di test. I risultati offrono informazioni su come Spanner gestisce carichi di lavoro specifici, si adatta all'aumento della domanda e funziona durante i picchi di carico.
Per ulteriori informazioni e configurazioni di esempio, consulta il repository Machmeter.
QuickPerf è uno strumento di benchmarking leggero progettato per i test delle prestazioni con Spanner. Si concentra sulla generazione di metriche sul rendimento con una configurazione minima, consentendoti di eseguire rapidamente iterazioni sulle ottimizzazioni. QuickPerf è facile da configurare ed è particolarmente adatto per test su scala ridotta e scenari in cui vuoi misurare rapidamente l'impatto sul rendimento di ottimizzazioni specifiche di schemi o query.
Best practice per il test di carico
Quando esegui test di carico, è fondamentale seguire le best practice di Spanner per garantire risultati accurati e strategici.
- Periodo di riscaldamento:consenti un periodo di riscaldamento (in genere 30 minuti o più) per consentire a Spanner di raggiungere uno stato stabile dopo il ridimensionamento dei nodi o l'introduzione di un nuovo workload.
- Misura le metriche pertinenti:concentrati su metriche come il throughput (operazioni al secondo), i percentili di latenza (ad esempio p50, p95) e l'utilizzo della CPU per capire come Spanner gestisce il tuo carico di lavoro.
- Esegui benchmark di lunga durata:per ottenere risultati più rappresentativi, esegui i test di carico per periodi prolungati (ad esempio, per più di un'ora) per tenere conto dei comportamenti del sistema, come il ribilanciamento e le attività di manutenzione in background.
- Test di scalabilità:testa gli scenari di scalabilità verticale e orizzontale per osservare il comportamento di Spanner in diverse configurazioni dei nodi e carichi di picco.
Puoi utilizzare strumenti come JMeter Machmeter e QuickPerf, insieme alle best practice per il test di carico, per valutare in modo efficace le prestazioni di Spanner, identificare i colli di bottiglia e ottimizzare il database per soddisfare le esigenze del tuo carico di lavoro.
Monitoraggio
Per dimostrare in modo efficace le prestazioni e la scalabilità di Spanner durante una POC, soprattutto sotto carico, è necessario comprendere a fondo le sue caratteristiche operative. Spanner fornisce una suite completa di strumenti di monitoraggio e diagnostica progettati per fornirti informazioni granulari su ogni aspetto delle prestazioni del tuo database. Questo set di strumenti offre una gamma di risorse, dalle dashboard delle metriche alle tabelle di sistema dettagliate, che ti aiutano a identificare i colli di bottiglia, convalidare le scelte di progettazione e ottimizzare le prestazioni.
Approfondimenti sul sistema fornisce un'osservabilità approfondita delle prestazioni e dello stato operativo di un'istanza Spanner. Offre metriche e approfondimenti su diverse aree, tra cui utilizzo della CPU, latenza, velocità effettiva e altro ancora, a livelli di granularità regolabili. Durante una POC, questo è il punto di partenza per osservare il comportamento di Spanner durante i test. System Insights ti consente di identificare rapidamente i colli di bottiglia delle prestazioni, come un elevato utilizzo della CPU o un aumento delle latenze di lettura o scrittura. e pone le basi per le indagini successive.
Query Insights fornisce una visualizzazione dall'alto verso il basso dell'esecuzione delle query, a partire dall'identificazione delle query più frequenti e costose in base a metriche quali tempo CPU, numero di esecuzioni e latenza media. Se vuoi approfondire, Query Insights ti consente di esaminare i piani di esecuzione dettagliati, incluse le statistiche per ogni passaggio della query, e individua le operazioni specifiche che causano rallentamenti. Offre anche funzionalità che analizzano le tendenze storiche del rendimento e confrontano il rendimento delle query in diversi periodi di tempo. In questo modo puoi identificare regressioni o l'impatto delle modifiche allo schema e al codice. Strumenti aggiuntivi, come i suggerimenti sull'indicizzazione, analizzano le query per consigliare indici nuovi o modificati che possono migliorare le prestazioni delle query.
Gli approfondimenti sulle transazioni forniscono visibilità sul rendimento delle transazioni con metriche dettagliate su latenza delle transazioni, tempi di attesa del commit, numero di righe e byte letti e scritti e partecipanti alle transazioni distribuite. Queste metriche rivelano transazioni con latenza elevata o interrotte e forniscono dettagli sulle loro caratteristiche. Durante un test di carico POC, gli approfondimenti sulle transazioni sono essenziali per valutare l'efficienza transazionale del sistema sotto stress. Ti consente di monitorare e identificare eventuali peggioramenti all'aumentare del carico. L'analisi delle singole transazioni ti aiuta a individuare le cause dei rallentamenti, ad esempio transazioni di lunga durata che bloccano altre transazioni o singole transazioni che leggono o scrivono volumi di dati eccessivamente grandi. Le informazioni degli approfondimenti sulle transazioni ti consentono di eseguire ottimizzazioni mirate, ad esempio ottimizzare i limiti delle transazioni, perfezionare le query all'interno delle transazioni o modificare lo schema per ridurre la quantità di dati coinvolti nelle transazioni tipiche. In questo modo, la POC dimostra la capacità di Spanner di mantenere la coerenza transazionale e le prestazioni al livello di carico previsto.
Approfondimenti sui blocchi fornisce visibilità sul comportamento di blocco delle transazioni, aiutandoti a identificare e risolvere i problemi di contesa dei blocchi. Mostra informazioni sulle attese di blocco, inclusi gli intervalli dichiave di rigaa specifici che causano il problema. Durante un test di carico POC, il blocco degli approfondimenti è fondamentale per identificare se i conflitti di blocco transazionale causano limitazioni di scalabilità. Man mano che il carico simultaneo aumenta, le transazioni potrebbero iniziare a competere per aggiornare gli stessi dati, con conseguente aumento dei tempi di attesa e riduzione del throughput. Queste informazioni ti aiutano con l'ottimizzazione dello schema, la modifica dei limiti delle transazioni e gli aggiustamenti della logica dell'applicazione. Queste azioni riducono la contesa e garantiscono che il database Spanner mantenga le prestazioni in base al carico di lavoro previsto, evitando il degrado dovuto ai meccanismi di blocco.
Insight hotspot identifica i colli di bottiglia delle prestazioni, in particolare l'aumento della latenza, che derivano dalle condizioni di hotspotting. I punti caldi si verificano in genere quando il carico è elevato e irregolare. Spesso, le cause dei punti di calore sono:
- Progettazione dello schema non ottimale
- Selezione della chiave primaria
- Modelli di accesso che concentrano le operazioni su un piccolo sottoinsieme di dati anziché distribuirli in modo uniforme tra i nodi
Durante un test di carico POC, gli approfondimenti sugli hotspot ti aiutano a decidere dove ottimizzare lo schema. Ad esempio, potresti dover regolare le chiavi primarie o modificare gli indici secondari per evitare hotspot.
Key Visualizer fornisce una rappresentazione visiva dei pattern di utilizzo del database nel tempo nell'intero spazio delle chiavi di tabelle e indici. Genera mappe termiche che mostrano l'attività di lettura e scrittura, evidenziando le aree di alta intensità e i pattern potenzialmente problematici. Durante una POC, questo strumento aiuta a convalidare la progettazione dello schema e a identificare potenziali limiti di scalabilità. Man mano che il carico aumenta, puoi osservare come il workload viene distribuito nello spazio delle chiavi e nelle rispettive tabelle e indici.
Le tabelle di introspezione, principalmente il sistema di tabelle Spanner_SYS
, forniscono una grande quantità di informazioni sullo stato interno e sul rendimento del database. Queste tabelle mostrano statistiche dettagliate
sull'esecuzione delle query, sul comportamento delle transazioni, sulla contesa dei blocchi e sui dettagli
dello schema. Durante un test di carico POC, queste tabelle di introspezione forniscono un
approccio basato sui dati alla diagnostica delle prestazioni, al di là di quanto offerto dagli strumenti
di approfondimento menzionati in precedenza. Ad esempio, puoi utilizzarli per
risolvere la causa principale di conflitti di blocco
nel database difficili da rilevare
e ricavare informazioni utili per l'ottimizzazione.
Ottimizzazione
Il test di carico è un passaggio fondamentale per identificare problemi di prestazioni e potenziali colli di bottiglia nell'implementazione di Spanner. Gli approfondimenti ottenuti da questi test devono guidare gli sforzi di ottimizzazione nella progettazione dello schema, nel comportamento delle transazioni e nel rendimento delle query per garantire che Spanner soddisfi le esigenze del tuo workload.
Ottimizzare la progettazione dello schema
Sebbene la progettazione iniziale dello schema si basi sulle best practice per la scalabilità e le prestazioni, l'esecuzione dei carichi di lavoro in condizioni reali spesso rivela aree che richiedono perfezionamento. I test di carico forniscono informazioni preziose su come lo schema funziona in condizioni specifiche, evidenziando problemi come hotspot, distribuzione irregolare dei dati o inefficienze nelle prestazioni delle query.
L'ottimizzazione si concentra sulla messa a punto delle seguenti aree per allinearle alle caratteristiche del carico di lavoro della tua applicazione.
- Modifiche alla chiave primaria:se i test di carico rivelano hotspot o una distribuzione dei dati non bilanciata, rivedi la progettazione della chiave primaria. Ad esempio, valuta la possibilità di aggiungere casualità al prefisso della chiave per distribuire i dati in modo più uniforme tra i nodi, preservando l'efficienza delle query.
- Perfezionamenti dell'indice:i test di carico possono rivelare se indici ridondanti o un'indicizzazione eccessiva influiscono negativamente sulla velocità effettiva di scrittura. Rimuovi gli indici non necessari o ristruttura quelli esistenti per migliorare il rendimento delle query. Valuta la selettività dell'indice e assicurati che sia in linea con i pattern di query tipici.
- Tabelle e gerarchie con interfoliazione:analizza se le tabelle correlate possono trarre vantaggio dall'interfoliazione delle tabelle per ridurre la latenza delle query. Modifica le decisioni di interleaving in base ai pattern di accesso osservati durante i test. Al contrario, valuta la possibilità di modellare queste tabelle separatamente se la struttura gerarchica causa un overhead imprevisto.
Per informazioni sulla creazione di schemi scalabili, consulta le best practice per la progettazione dello schema Spanner.
Ottimizza la semantica e le query delle transazioni
I test di carico spesso evidenziano inefficienze nell'esecuzione di transazioni e query, come problemi di contesa o blocco elevati. Ottimizza la semantica delle transazioni e le strutture delle query per massimizzare il throughput e ridurre al minimo la latenza:
- Modalità transazione:utilizza la modalità transazione appropriata per ogni operazione del workload. Ad esempio, utilizza transazioni di sola lettura per le query che non modificano i dati o DML partizionato per aggiornamenti ed eliminazioni collettivi.
- Batching:se possibile, utilizza le operazioni di scrittura batch per ridurre l'overhead causato da più round trip.
- Ottimizzazione delle query:esegui il refactoring delle query per includere solo le colonne e le righe necessarie, sfrutta gli indici e utilizza parametri di ricerca nell'applicazione per ridurre il sovraccarico.
Per informazioni sulle strategie di ottimizzazione, consulta la panoramica delle transazioni e le best practice per SQL.
Test di carico iterativi
L'ottimizzazione è un processo iterativo. Esegui test di carico dopo ogni modifica significativa dello schema o della query per convalidare i miglioramenti e assicurarti che non vengano introdotti nuovi colli di bottiglia.
Simula scenari di applicazione realistici con diversi livelli di concorrenza, tipi di transazione e volumi di dati per verificare che Spanner funzioni come previsto in condizioni di picco e di stato stazionario.
Metriche chiave da monitorare
Tieni traccia delle metriche chiave come latenza (p50, p99), throughput e utilizzo della CPU durante l'ottimizzazione.
Passaggi successivi
- Guarda Come pianificare ed eseguire una POC di Spanner per scoprire i passaggi essenziali, le best practice e gli strumenti necessari per valutare in modo efficace le funzionalità di Spanner.