Questo elenco di controllo per il lancio fornisce un elenco di considerazioni che è necessario fare prima di avviare un'applicazione di produzione su Spanner. Non ha lo scopo di essere esaustivo, ma serve a evidenziare le aree che possono avere un grande impatto sul rendimento della produzione.
Scegli una configurazione dell'istanza adatta
Scegli una configurazione dell'istanza (a livello di regione o multiregionale) in base ai tuoi requisiti.
Se scegli tipi di istanze multiregionali, l'applicazione che accede a Spanner deve trovarsi nelle immediate vicinanze della regione leader. Puoi trovare ulteriori dettagli nella pagina Istanze.
Progetta lo schema per le prestazioni su larga scala
Lo schema dei dati relazionali di Spanner è simile ai tradizionali database relazionali, con alcune sfumature che devono essere prese in considerazione:
- Utilizza le tabelle con interleaving anziché le relazioni di chiave esterna ove applicabile.
- Scegli una chiave primaria che impedisca gli hotspot.
- Assicurati che gli indici secondari non creino hotspot (come gli hotspot delle chiavi principali).
- Se necessario, crea indici secondari e colonne correlate al negozio.
- Limita le dimensioni delle righe.
Comprendere i fattori relativi alle prestazioni
Con lo sharding automatico e successivamente i dati archiviati in suddivisioni, più una query è mirata, maggiori saranno le prestazioni. Se restringi la ricerca a un singolo elemento principale con interfoliazione e a tutti i relativi elementi secondari, le prestazioni saranno migliori rispetto a quelle delle query o delle operazioni che interessano più righe.
Ti consigliamo vivamente di eseguire benchmarking e test su larga scala per assicurarti che i problemi e i colli di bottiglia vengano rilevati prima del lancio. Spanner fornisce piani di esecuzione delle query che possono essere utilizzati con le tabelle durante la progettazione dello schema per comprendere la probabilità di esecuzione delle query.
Altri fattori di rendimento da prendere in considerazione:
- Quando non scrivi dati, preferisci le transazioni di sola lettura rispetto alle transazioni di lettura/scrittura più costose.
- Progetta la tua applicazione in modo da ridurre al minimo il numero di partecipanti suddivisi in una transazione. Spanner può eseguire transazioni tra righe su server diversi; Tuttavia, come regola generale, le transazioni che interessano molte righe con collocazione condivisa sono più veloci ed economiche rispetto a quelle che interessano molte righe sparse nel database o in una tabella di grandi dimensioni.
- Utilizza i parametri di query anziché le stringhe letterali per migliorare le prestazioni delle query e il monitoraggio delle statistiche.
Informazioni su limiti e quote
Per motivi di architettura e per mantenere le sue elevate prestazioni e ridondanza, Spanner ha determinate quote e limiti che devono essere presi in considerazione nella progettazione dell'applicazione. Le quote possono essere aumentate con un tempo di risposta.
Ad esempio, esiste un limite di 80.000 mutazioni per commit e un massimo di 15 join per query.
Questi limiti, insieme alla progettazione dello schema e alla prevenzione degli hotspot, influiscono sul caricamento collettivo, quindi assicurati di seguire le best practice per il caricamento collettivo.
Assicurati che sia in atto il monitoraggio
Configura Cloud Monitoring per ricevere avvisi quando ti avvicini ai limiti.
Aumenta la quantità di capacità di calcolo se raggiungi le metriche sul rendimento per la scalabilità lineare delle istanze Spanner. Ti consigliamo di mantenere l'utilizzo della CPU al di sotto del 65% per le istanze specifiche per regione e al di sotto del 45% per le istanze multiregionali.
Utilizza Modelli di query nella pagina Query di un database per monitorare le statistiche delle query nelle tabelle delle statistiche delle query.
Avere una strategia di migrazione dei dati (se richiesta)
Il caricamento collettivo dei dati in Spanner deve tenere conto dell'architettura distribuita per mantenere le prestazioni:
- Eseguire il partizionamento dei dati in base alla chiave primaria
- Evita il pushback e monitora l'utilizzo della CPU
- La creazione di indici secondari dopo il caricamento dei dati è generalmente più rapida
Questo post del blog è un buon esempio di implementazione di scritture a velocità effettiva elevata.
Assicurati che la configurazione di sicurezza sia in atto
Configura ruoli IAM pertinenti per gestire la sicurezza a livello di database e istanza. La sicurezza a livello di tabella deve essere gestita all'interno dell'applicazione.
Comprendere le opzioni di assistenza
Assicurati di avere adottato una strategia per ricevere assistenza.