Spanner fornisce tabelle integrate che registrano le statistiche delle operazioni di lettura, query e scrittura per le colonne della tabella. Con le statistiche sulle operazioni sulle colonne puoi:
Identifica le colonne con traffico di lettura, query e scrittura imprevisto.
Identifica le colonne più utilizzate.
Quando esegui una query o scrivi in una colonna, Spanner incrementa di uno il conteggio delle operazioni corrispondente per quella colonna, indipendentemente dal numero di righe a cui accedi.
Puoi monitorare l'utilizzo complessivo di un database utilizzando metriche che misurano le operazioni al secondo, le operazioni al secondo per metodo API e altre metriche correlate nei grafici di System Insights.
Accedere alle statistiche sulle operazioni sulle colonne
Spanner fornisce le statistiche sulle operazioni sulle colonne nello schema SPANNER_SYS
. Puoi utilizzare quanto segue per accedere ai dati di SPANNER_SYS
:
La pagina Spanner Studio di un database nella console Google Cloud
Il comando
gcloud spanner databases execute-sql
Il metodo
executeSql
oexecuteStreamingSql
.
I seguenti metodi di lettura singola forniti da Spanner
non supportano SPANNER_SYS
:
- Esecuzione di una lettura coerente da una o più righe di una tabella.
- Esecuzione di una lettura obsoleta da una o più righe di una tabella.
- Lettura da una singola riga o da più righe in un indice secondario.
Per ulteriori informazioni, consulta Metodi di lettura singola.
Statistiche sulle operazioni sulle colonne
Le seguenti tabelle monitorano le statistiche di lettura, query e scrittura sulle colonne durante un periodo di tempo specifico:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: operazioni durante intervalli di 1 minutoSPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: operazioni durante intervalli di 10 minutiSPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: Operazioni durante intervalli di 1 ora
Queste tabelle hanno le seguenti proprietà:
Ogni tabella contiene dati per intervalli di tempo non sovrapposti della durata specificata dal nome della tabella.
Gli intervalli di 1 minuto iniziano al minuto, gli intervalli di 10 minuti iniziano ogni 10 minuti a partire dall'ora e gli intervalli di 1 ora iniziano all'ora.
Ad esempio, alle 11:59:30, le query SQL possono accedere agli intervalli più recenti seguenti:
- 1 minuto: 11:58:00–11:58:59
- 10 minuti: 11:40:00 - 11:49:59
- 1 ora: 10:00:00–10:59:59
Schema per tutte le tabelle delle statistiche delle operazioni sulle colonne
Nome colonna | Tipo | Descrizione |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Fine dell'intervallo di tempo in cui sono state raccolte le statistiche di utilizzo delle colonne. |
TABLE_NAME |
STRING |
Il nome della tabella o dell'indice. |
COLUMN_NAME |
STRING |
Nome della colonna. |
READ_COUNT |
INT64 |
Numero di letture dalla colonna. |
QUERY_COUNT |
INT64 |
Numero di query che leggono dalla colonna. |
WRITE_COUNT |
INT64 |
Numero di query che scrivono nella tabella. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
Indica se la raccolta delle statistiche è stata limitata a causa della pressione della memoria. |
Se inserisci dati nel database utilizzando le mutazioni, Spanner
incrementa WRITE_COUNT
di 1 per ogni tabella a cui accede l'istruzione di inserimento. Inoltre, una query che accede a un indice senza scansionare la
tabella sottostante incrementa solo QUERY_COUNT
nell'indice.
Conservazione dei dati
Come minimo, Spanner conserva i dati per ogni tabella per i seguenti periodi di tempo:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: intervalli che coprono le sei ore precedenti.SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: Intervalli che coprono i quattro giorni precedenti.SPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: intervalli che coprono i 30 giorni precedenti.
Esempi di query
Questa sezione include diversi esempi di istruzioni SQL che recuperano le statistiche aggregate sulle operazioni sulle colonne. Puoi eseguire queste istruzioni SQL utilizzando le librerie client o Google Cloud CLI.
Esegui query sulle colonne della tabella con il maggior numero di operazioni di scrittura per l'intervallo più recente
GoogleSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
Esegui query sulle colonne con il maggior numero di operazioni di query per l'intervallo più recente
GoogleSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
Esegui query sull'utilizzo di una colonna nelle ultime 6 ore
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Dove:
table_name
deve essere una tabella o un indice esistente nel database.column_name
deve essere una colonna esistente nella tabella.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Dove:
table_name
deve essere una tabella o un indice esistente nel database.column_name
deve essere una colonna esistente nella tabella.
Esegui query sull'utilizzo di una colonna negli ultimi 14 giorni
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Effettua le seguenti sostituzioni:
table_name
: il nome della tabella o dell'indice nel database.column_name
: il nome della colonna nella tabella.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Effettua le seguenti sostituzioni:
table_name
: il nome della tabella o dell'indice nel database.column_name
: il nome della colonna nella tabella.
Passaggi successivi
Scopri di più sulle altre tabelle delle statistiche integrate.
Scopri di più sulle best practice per SQL per Spanner.