Statistiken zu Tabellenvorgängen

Spanner bietet integrierte Tabellen, die den Lesevorgang (oder Abfrage) Statistiken zu Schreib- und Löschvorgängen für Ihre Tabellen (einschließlich Änderungs- streamt Tabellen) und Indexe. Mit den Statistiken zu Tabellenvorgängen können Sie Folgendes:

  • Identifizieren Sie Tabellen mit erhöhtem Schreibtraffic, bis zur Speichererweiterung.

  • Identifizieren Sie Tabellen mit unerwartetem Lese-, Schreib- und Löschtraffic.

  • Stark verwendete Tabellen identifizieren.

Wenn Sie eine Tabelle abfragen oder schreiben, wird die Anzahl der entsprechenden Vorgänge für die Tabelle wird um 1 erhöht, unabhängig von der Anzahl der Zeilen, auf die zugegriffen wird.

Die Gesamtmesswerte der Vorgänge pro Sekunde einer Datenbank können mit Operations per second, Operations per second by API method und andere zugehörige Messwerte in den Systemstatistiken .

Verfügbarkeit

Spanner stellt die Statistiken zu Tabellenvorgängen in der SPANNER_SYS-Schema. SPANNER_SYS-Daten sind nur über SQL verfügbar Schnittstellen. Beispiel:

  • Die Spanner Studio-Seite einer Datenbank in der Google Cloud Console

  • Befehl gcloud spanner databases execute-sql

  • Mit der executeQuery API

Andere von Spanner bereitgestellte Methoden für einzelne Leseaufrufe werden nicht unterstützt SPANNER_SYS

Statistiken zu Tabellenvorgängen

In den folgenden Tabellen werden Lese- (oder Abfrage-), Schreib- und Löschstatistiken zu Ihren Tabellen und Indexe in einem bestimmten Zeitraum:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: Vorgänge in Intervallen von 1 Minute
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: Vorgänge in Intervallen von 10 Minuten
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: Vorgänge in Intervallen von 1 Stunde

Diese Tabellen haben folgende Attribute:

  • Jede Tabelle enthält Daten für nicht überlappende Zeitintervalle der Länge, der Tabellenname angibt.

  • Die Intervalle basieren auf der Uhrzeit. 1-Minuten-Intervalle beginnen minutengenau, 10 Minutenintervalle beginnen alle 10 Minuten ab der vollen Stunde und 1 Stunde Intervalle beginnen zur vollen Stunde.

    Beispielsweise sind die neuesten, für SQL-Abfragen verfügbaren Intervalle um 11:59:30 Uhr:

    • 1 Minute: 11:58:00–11:58:59 Uhr
    • 10 Minuten: 11:40:00–11:49:59 Uhr
    • 1 Stunde: 10:00:00–10:59:59 Uhr

Schema für alle Statistiktabellen zu Tabellenvorgängen

Spaltenname Typ Beschreibung
INTERVAL_END TIMESTAMP Ende des Zeitintervalls, in dem die Tabellengrößen erfasst wurden.
TABLE_NAME STRING Name der Tabelle oder des Index.
READ_QUERY_COUNT INT64 Anzahl der Abfragen oder Lesevorgänge, die aus der Tabelle gelesen werden.
WRITE_COUNT INT64 Anzahl der Abfragen, die in die Tabelle geschrieben wurden.
DELETE_COUNT INT64 Anzahl der Abfragen, bei denen Löschvorgänge für die Tabelle durchgeführt werden.

Wenn Sie Daten mithilfe von Mutationen in Ihre Datenbank einfügen, gibt der write_count wird für jede Tabelle, auf die über die insert-Anweisung zugegriffen wird, um 1 erhöht. Außerdem eine Abfrage, die auf einen Index zugreift, ohne die zugrunde liegende Tabelle zu scannen, erhöht den read_query_count für den Index.

Datenaufbewahrung

Spanner speichert Daten für jede Tabelle zumindest für Folgendes: Zeiträumen:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: Intervalle der letzten 6 Stunden.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: Intervalle für den vorherigen Zeitraum 4 Tage.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: Intervalle für die letzten 30 Tage.

Beispielabfragen

Dieser Abschnitt enthält mehrere Beispiel-SQL-Anweisungen, die Aggregate Statistiken zu Tabellenvorgängen. Sie können diese SQL-Anweisungen mit der Methode Clientbibliotheken oder die gcloud spanner:

Tabellen und Indexe mit den meisten Schreibvorgängen für das letzte Intervall abfragen

    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;
  

Tabellen und Indexe mit den meisten Löschvorgängen im letzten Intervall abfragen

    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;
  

Tabellen und Indexe mit den meisten Lese- und Abfragevorgängen im letzten Intervall abfragen

    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;
  

Nutzung einer Tabelle in den letzten 6 Stunden abfragen

    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;
    

Wobei:

  • table_name muss eine vorhandene Tabelle oder ein vorhandener Index sein in der Datenbank.

Nutzung einer Tabelle in den letzten 14 Tagen abfragen

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;

Wobei:

  • table_name muss eine vorhandene Tabelle oder ein vorhandener Index sein in der Datenbank.

Tabellen und Indexe ohne Verwendung in den letzten 24 Stunden abfragen

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));

Nächste Schritte