Statistiche delle operazioni delle tabelle

Spanner fornisce tabelle integrate che registrano la lettura (o query), scrivere ed eliminare le statistiche relative alle operazioni per le tabelle (incluse le variazioni le tabelle in flussi) e gli indici. Con le statistiche delle operazioni con tabella puoi eseguire seguenti:

  • Identifica le tabelle con maggiore traffico di scrittura corrispondente all'aumento dello spazio di archiviazione.

  • Identifica le tabelle con traffico di lettura, scrittura ed eliminazione imprevisti.

  • Identifica le tabelle molto utilizzate.

Quando esegui una query o scrivi in una tabella, le operazioni corrispondenti contano per il di 1, a prescindere dal numero di righe a cui si accede.

Le metriche generali delle operazioni al secondo di un database possono essere monitorate con Operations per second, Operations per second by API method e altro metriche correlate negli approfondimenti sul sistema. grafici.

Disponibilità

Spanner fornisce le statistiche delle operazioni tabella Schema SPANNER_SYS. I dati di SPANNER_SYS sono disponibili solo tramite SQL interfacce. Ad esempio:

  • Pagina Spanner Studio di un database nella console Google Cloud

  • Il comando gcloud spanner databases execute-sql

  • API executeQuery

Gli altri metodi di lettura singoli forniti da Spanner non supportano SPANNER_SYS.

Statistiche delle operazioni delle tabelle

Le seguenti tabelle monitorano le statistiche di lettura (o query), scrittura ed eliminazione sul tuo di tabelle e indici durante un periodo di tempo specifico:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: operazioni durante intervalli di 1 minuto
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: operazioni durante intervalli di 10 minuti
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: operazioni a intervalli di 1 ora

Queste tabelle hanno le seguenti proprietà:

  • Ogni tabella contiene dati per intervalli di tempo non sovrapposti della durata specificato dal nome della tabella.

  • Gli intervalli sono basati sugli orari dell'orologio. Gli intervalli di 1 minuto iniziano al minuto, 10 Gli intervalli di minuti iniziano ogni 10 minuti a partire dall'ora e ogni ora gli intervalli iniziano all'ora.

    Ad esempio, alle 11:59:30, gli intervalli più recenti disponibili per SQL le query sono:

    • 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 relative alle operazioni sulle tabelle

Nome colonna Tipo Descrizione
INTERVAL_END TIMESTAMP Fine dell'intervallo di tempo in cui sono state raccolte le dimensioni della tabella.
TABLE_NAME STRING Nome della tabella o dell'indice.
READ_QUERY_COUNT INT64 Numero di query o letture che vengono lette dalla tabella.
WRITE_COUNT INT64 Numero di query che scrivono nella tabella.
DELETE_COUNT INT64 Numero di query che eseguono eliminazioni nella tabella.

Se inserisci dati nel database utilizzando le mutazioni, write_count incrementi di 1 per ogni tabella a cui accede l'istruzione di inserimento. Inoltre, una query che accede a un indice, senza analizzare la tabella sottostante, incrementa read_query_count nell'indice.

Conservazione dei dati

Spanner conserva come minimo i dati di ogni tabella per quanto segue periodi di tempo:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: intervalli relativi ai 6 precedenti nell'orario lavorativo locale del TAM.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: intervalli relativi ai precedenti 4 giorni.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: intervalli che coprono i 30 precedenti giorni.

Esempi di query

Questa sezione include diverse istruzioni SQL di esempio che recuperano i dati aggregati statistiche sulle operazioni delle tabelle. Puoi eseguire queste istruzioni SQL utilizzando librerie client o gcloud spanner.

Query su tabelle e indici con il maggior numero di operazioni di scrittura per l'intervallo più recente

    SELECT interval_end,
          table_name,
          write_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY write_count DESC;
  

Esegui query su tabelle e indici con il maggior numero di operazioni di eliminazione per l'intervallo più recente

    SELECT interval_end,
          table_name,
          delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY delete_count DESC;
  

Esegui query su tabelle e indici con il maggior numero di operazioni di lettura e query per l'intervallo più recente

    SELECT interval_end,
          table_name,
          read_query_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY read_query_count DESC;
  

Query sull'utilizzo di una tabella nelle ultime 6 ore

    SELECT interval_end,
           read_query_count,
           write_count,
           delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE table_name = table_name
    ORDER BY interval_end DESC;
    

Dove:

  • table_name deve essere una tabella o un indice esistente nel database.

Query sull'utilizzo di una tabella negli ultimi 14 giorni

GoogleSQL

SELECT interval_end,
       read_query_count,
       write_count,
       delete_count
FROM spanner_sys.table_operations_stats_hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY)
      AND table_name = table_name
ORDER BY interval_end DESC;

Dove:

  • table_name deve essere una tabella o un indice esistente nel database.

Esegui query su tabelle e indici senza utilizzo nelle ultime 24 ore

GoogleSQL

(SELECT t.table_name
 FROM  information_schema.tables AS t
 WHERE t.table_catalog = ""
   AND t.table_schema = ""
   AND t.table_type = "BASE TABLE"
 UNION ALL
 SELECT cs.change_stream_name
 FROM information_schema.change_streams cs
 WHERE cs.change_stream_catalog = ""
   AND cs.change_stream_schema = ""
 UNION ALL
 SELECT idx.index_name
 FROM information_schema.indexes idx
 WHERE idx.index_type = "INDEX"
   AND idx.table_catalog = ""
   AND idx.table_schema = "")
 EXCEPT ALL
(SELECT  DISTINCT(table_name)
 FROM spanner_sys.table_operations_stats_hour
 WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));

Passaggi successivi