Questa pagina descrive e spiega come funziona l'archiviazione a livelli in Spanner. Questa funzionalità è supportata sia nei database con dialetto GoogleSQL sia in quelli con dialetto PostgreSQL.
L'archiviazione a livelli di Spanner è una funzionalità di archiviazione completamente gestita che ti consente di scegliere se archiviare i dati su unità a stato solido (SSD) o su unità disco rigido (HDD). Per impostazione predefinita, quando non utilizzi l'archiviazione a livelli, i dati vengono archiviati su spazio di archiviazione SSD. A seconda della frequenza con cui utilizzi o accedi ai dati, potresti prendere in considerazione l'utilizzo dell'archiviazione a livelli e l'archiviazione dei dati sia su SSD che su HDD.
- Lo spazio di archiviazione SSD è la scelta più efficiente (query al secondo più elevate) ed economica per la maggior parte dei casi d'uso. Dovresti utilizzarlo per archiviare i dati attivi con un throughput di scrittura e lettura elevato e i dati che richiedono un accesso a bassa latenza.
- Lo spazio di archiviazione HDD è a volte appropriato per set di dati di grandi dimensioni che non sono sensibili alla latenza, a cui si accede raramente o se il costo dello spazio di archiviazione è una considerazione importante.
L'utilizzo dell'archiviazione a livelli ti consente di sfruttare sia lo spazio di archiviazione SSD, che supporta le prestazioni elevate dei dati attivi, sia lo spazio di archiviazione HDD, che supporta l'accesso ai dati non frequente a un costo inferiore.
Scegliere tra spazio di archiviazione SSD e HDD
La tabella seguente elenca le differenze e le somiglianze tra lo spazio di archiviazione SSD e HDD. I valori di throughput nella tabella sono per nodo e scalano linearmente con il numero di nodi nell'istanza Spanner. In caso di dubbi, ti consigliamo di scegliere lo spazio di archiviazione SSD.
| Spazio di archiviazione SSD | Spazio di archiviazione HDD | |
|---|---|---|
| Casi d'uso target | Dati che richiedono un throughput di scrittura e lettura elevato e un accesso ai dati a bassa latenza | Set di dati di grandi dimensioni che non sono sensibili alla latenza o a cui si accede raramente |
| Throughput previsto per nodo Configurazioni regionali |
Fino a 22.500 QPS di lettura Fino a 3.500 QPS di scrittura |
Fino a 1.500 QPS di lettura Fino a 3.500 QPS di scrittura |
| Throughput previsto per nodo Configurazioni a due regioni e multiregionali |
Fino a 15.000 QPS di lettura per regione Fino a 2.700 QPS di scrittura |
Fino a 1.000 QPS di lettura per regione Fino a 2.700 QPS di scrittura |
| Operazioni supportate | Lettura, scrittura, aggiornamento ed eliminazione | Lettura, scrittura, aggiornamento ed eliminazione |
Utilizza le scritture ottimizzate per il throughput per aumentare il throughput di scrittura oltre i numeri nella tabella. Per saperne di più, consulta Panoramica delle prestazioni.
Vantaggi
L'archiviazione a livelli offre i seguenti vantaggi consentendoti di utilizzare sia lo spazio di archiviazione SSD che HDD:
- Riduzione significativa del costo totale di proprietà: lo spazio di archiviazione HDD offre un' opzione a costi inferiori per set di dati di grandi dimensioni che non sono sensibili alla latenza o a cui si accede raramente.
- Facilità di gestione: fornisce un servizio di tiering completamente gestito senza la complessità di pipeline aggiuntive e logica di suddivisione.
- Esperienza unificata e coerente: fornisce un accesso ai dati unificato e un unico set di metriche per i dati attivi e non attivi (modificabili)
- Prestazioni migliorate: migliora le prestazioni delle query organizzando i dati in gruppi di località diversi, che forniscono località e isolamento dei dati tra le colonne. I dati nello stesso gruppo di località vengono archiviati fisicamente vicini tra loro.
Come funziona l'archiviazione a livelli
Per impostazione predefinita, quando crei una nuova istanza, i dati vengono archiviati solo nello spazio di archiviazione SSD. Allo stesso modo, i dati nelle istanze esistenti vengono archiviati solo nello spazio di archiviazione SSD.
Se scegli di utilizzare l'archiviazione a livelli per archiviare alcuni dati nello spazio di archiviazione HDD, devi
creare un gruppo di località,
che viene utilizzato per definire la policy di archiviazione a livelli per i dati nello schema. Quando crei un gruppo di località, puoi definire il tipo di archiviazione, ssd o hdd. Facoltativamente, puoi anche definire la quantità di tempo in cui i dati vengono archiviati nello spazio di archiviazione SSD prima di essere spostati nello spazio di archiviazione HDD. Questo tempo è relativo al timestamp di commit dei dati. Trascorso il tempo specificato, Spanner esegue la migrazione dei dati allo spazio di archiviazione HDD durante il normale ciclo di compattazione, che in genere si verifica nell'arco di sette giorni dal momento specificato. Per
eseguire la migrazione dei dati tra SSD e HDD più velocemente del normale ciclo di compattazione, puoi
attivare manualmente una compattazione principale.
Questa è nota come policy di archiviazione a livelli basata sull'età. Quando utilizzi una policy di archiviazione a livelli basata sull'età, la quantità minima di tempo in cui i dati devono essere archiviati su SSD prima di essere spostati nello spazio di archiviazione HDD è di un'ora.
Con i gruppi di località definiti, quando crei le tabelle, puoi impostare la policy di archiviazione a livelli a livello di database, tabella, colonna o indice secondario. La policy di archiviazione a livelli determina come e dove vengono archiviati i dati. Per istruzioni, consulta Creare e gestire gruppi di località.
Dettagli sul comportamento principale
Quando utilizzi l'archiviazione a livelli, si applicano i seguenti comportamenti:
- I livelli di archiviazione vengono applicati a livello di cella: le policy di archiviazione a livelli basate sull'età si applicano alle singole celle di una riga, in base al timestamp di commit della cella. I dati vengono spostati nello spazio di archiviazione HDD se il timestamp di commit è precedente alla durata specificata. Una singola riga può quindi avere alcuni dati su SSD e altri su HDD, a seconda dell'ultima volta che ogni cella è stata aggiornata.
- Le tabelle interleaved sono indipendenti: le impostazioni del gruppo di località e le policy di archiviazione a livelli non vengono ereditate dalle tabelle secondarie interleaved. Devi applicare queste impostazioni a ogni tabella singolarmente.
- Le operazioni di lettura non influiscono sull'invecchiamento dei dati: la lettura dei dati da una tabella non reimposta la sua età né impedisce che venga spostata su HDD. Solo un'operazione di scrittura che aggiorna i dati reimposta il timestamp di commit e li mantiene nello spazio di archiviazione SSD.
- Spostamento dei dati da HDD a SSD: quando aggiorni i dati archiviati su HDD, Spanner scrive la nuova versione dei dati direttamente nello spazio di archiviazione SSD. La versione precedente dei dati su HDD viene contrassegnata come obsoleta e viene pulita in un secondo momento da un processo di compattazione in background. Puoi attivare manualmente una compattazione principale per pulirla più velocemente. In questo modo, gli aggiornamenti dei dati non attivi beneficiano immediatamente delle prestazioni SSD per le successive letture dei nuovi dati.
Backup e ripristino
Puoi eseguire il backup e il ripristino dei dati utilizzando i backup di Spanner.
Il backup contiene tutte le informazioni sullo schema di archiviazione, inclusa
INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS, che
specifica il tipo di archiviazione di ogni gruppo di località. Per ripristinare un backup contenente gruppi di località in una nuova istanza, l'istanza di destinazione deve essere nella versione Spanner Enterprise o Spanner Enterprise Plus.
Data Boost
Puoi utilizzare Spanner Data Boost per accedere ai dati nello spazio di archiviazione SSD o HDD. L'esecuzione di query sui dati su HDD utilizza la capacità di carico del disco HDD dell'istanza , che fa parte della capacità di calcolo.
Indici di ricerca
La ricerca full-text e gli indici vettoriali ereditano il gruppo di località impostato sull'oggetto database.
Osservabilità
Le seguenti funzionalità di osservabilità sono disponibili per l'archiviazione a livelli.
Metriche di Cloud Monitoring
Spanner fornisce le seguenti metriche per aiutarti a monitorare l'utilizzo dello spazio di archiviazione a livelli e i dati utilizzando Cloud Monitoring:
spanner.googleapis.com/instance/storage/used_bytes(spazio di archiviazione totale): mostra il totale dei byte di dati archiviati nello spazio di archiviazione SSD e HDD.spanner.googleapis.com/instance/storage/combined/limit_bytes: mostra il limite di spazio di archiviazione SSD e HDD combinato.spanner.googleapis.com/instance/storage/combined/limit_bytes_per_processing_unit: mostra il limite di spazio di archiviazione SSD e HDD combinato per ogni unità di elaborazione.spanner.googleapis.com/instance/storage/combined/utilization: mostra l'utilizzo combinato dello spazio di archiviazione SSD e HDD, rispetto al limite di spazio di archiviazione combinato.spanner.googleapis.com/instance/disk_load: mostra l'utilizzo dell'HDD in percentuale. Se l'istanza raggiunge il 100% del carico del disco HDD, si verifica un aumento significativo della latenza.
Se hai query esistenti che filtrano le metriche esistenti in base a storage_class:ssd, devi rimuovere il filtro per visualizzare l'utilizzo dell'HDD.
Per saperne di più sul monitoraggio delle risorse Spanner, consulta Monitorare le istanze con informazioni di sistema e Monitorare le istanze con Cloud Monitoring.
Schema di informazioni
INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS contiene l'elenco dei gruppi di località e delle opzioni nel database Spanner. Include informazioni per il gruppo di località default. Per saperne di più, consulta
locality_group_options per i database con dialetto GoogleSQL
e locality_group_options per i database con dialetto PostgreSQL.
Tabelle delle statistiche integrate
Le seguenti tabelle delle statistiche integrate sono disponibili per i database che utilizzano l'archiviazione a livelli:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: mostra l'utilizzo dello spazio di archiviazione HDD e SSD per ogni tabella nel database.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: mostra l'utilizzo dello spazio di archiviazione HDD e SSD per ogni gruppo di località nel database.
Per saperne di più, consulta Statistiche sulle dimensioni delle tabelle.
Le tabelle delle statistiche delle query e delle statistiche di lettura hanno la seguente colonna correlata all'archiviazione a livelli:
AVG_DISK_IO_COST: il costo medio di questa query in termini di carico del disco HDD di Spanner. Utilizza questo valore per confrontare i costi di I/O HDD relativi tra le letture eseguite nel database. Un valore più alto indica che stai utilizzando più carico del disco HDD e che la query potrebbe essere più lenta rispetto a se fosse in esecuzione su SSD. Inoltre, se il carico del disco HDD è al massimo della capacità, le prestazioni delle query potrebbero essere ulteriormente influenzate.
Per saperne di più, consulta Statistiche delle query e Statistiche di lettura.
Prezzi
Non sono previsti costi aggiuntivi per l'utilizzo dell'archiviazione a livelli. Ti vengono addebitati i prezzi standard di Spanner per la quantità di capacità di calcolo utilizzata dall'istanza e la quantità di spazio di archiviazione utilizzata dal database. I dati archiviati su SSD e HDD vengono fatturati alle rispettive tariffe di archiviazione. Non ti vengono addebitati costi per lo spostamento dei dati tra lo spazio di archiviazione SSD e HDD. L'esecuzione di query sui dati su HDD utilizza la capacità di carico del disco HDD dell'istanza, che fa parte dei prezzi della capacità di calcolo. Per saperne di più, consulta Prezzi di Spanner.
Passaggi successivi
- Scopri di più sui gruppi di località.
- Scopri come creare e gestire i gruppi di località.
- Scopri di più sull'ottimizzazione delle query con il push-down del predicato del timestamp.