Spanner bietet eine Reihe integrierter Statistiktabellen, mit denen Sie Einblicke in Ihre Abfragen, Lesevorgänge und Transaktionen erhalten. Um Statistiken mit Ihrem Anwendungscode zu korrelieren und die Fehlerbehebung zu verbessern, können Sie Ihren Spanner-Lese-, Abfrage- und Transaktionsvorgängen ein Tag (ein Freitextstring) in Ihrem Anwendungscode hinzufügen. Diese Tags werden in Statistiktabellen eingetragen, sodass Sie basierend auf Tags korrelieren und suchen können.
Spanner unterstützt zwei Tag-Typen: Anfrage-Tags und Transaktions-Tags. Wie die Namen vermuten lassen, können Sie Transaktions-Tags einer Transaktion hinzufügen und Anfrage-Tags an einzelne Abfragen und Lese-APIs. Sie können ein Transaktions-Tag auf Transaktionsebene festlegen und einzelne Anfrage-Tags für jede anwendbare API-Anfrage in der Transaktion festlegen. Anfrage- und Transaktions-Tags, die im Anwendungscode festgelegt sind, werden in die Spalten der folgenden Statistiktabellen eingetragen.
Statistiktabelle | In der Statistiktabelle eingetragene Tag-Arten |
---|---|
Statistiken zu TopN-Abfragen | Anfrage-Tags |
Statistiken zu TopN-Lesevorgängen | Anfrage-Tags |
Statistiken zur TopN-Transaktionen | Transaktions-Tags |
Statistiken zu TopN-Sperren | Transaktions-Tags |
Anfrage-Tags
Sie können einer Abfrage oder einer Leseanfrage ein optionales Anfrage-Tag hinzufügen. Spanner gruppiert Statistiken nach Anfrage-Tag, was im Feld REQUEST_TAG
sowohl der Abfragestatistiktabelle als auch der Lesestatistiktabelle zu sehen ist.
Wann werden Anfrage-Tags verwendet?
Im Folgenden sind einige Szenarien aufgeführt, die sich für die Verwendung von Anfrage-Tags eignen.
- Quelle einer problematischen Abfrage oder eines problematischen Lesevorgangs ermitteln: Spanner erfasst Statistiken für Lesevorgänge und Abfragen in integrierten Statistiktabellen. Wenn Sie in der Statistiktabelle langsame Abfragen oder Lesevorgänge mit hoher CPU-Auslastung sehen, denen Sie bereits Tags zugewiesen haben, können Sie auf Basis der Informationen im Tag die Quelle (Anwendung/Mikrodienst) identifizieren, die diese Vorgänge aufruft.
- Lesevorgänge oder Abfragen in Statistiktabellen identifizieren: Durch Zuweisen von Anfrage-Tags können Zeilen in der Statistiktabelle anhand der für Sie interessanten Tags gefiltert werden.
- Ermitteln, ob Abfragen von einer bestimmten Anwendung oder einem bestimmten Mikrodienst langsam sind: Anfrage-Tags können dabei helfen, zu ermitteln, ob Abfragen einer bestimmten Anwendung oder eines bestimmten Mikrodienstes höhere Latenzen haben.
- Statistiken für mehrere Lesevorgänge oder Abfragen gruppieren: Sie können Anfrage-Tags verwenden, um die Leistung für eine Reihe ähnlicher Lese- oder Abfragevorgänge zu verfolgen, zu vergleichen und zu melden. Wenn beispielsweise mehrere Abfragen auf eine Tabelle oder einen Tabellensatz mit demselben Zugriffsmuster zugreifen, können Sie allen diese Abfragen dasselbe Tag hinzufügen, um sie gemeinsam zu verfolgen.
So weisen Sie Anfrage-Tags zu
Im folgenden Beispiel wird gezeigt, wie Anfrage-Tags mithilfe der Spanner-Clientbibliotheken festgelegt werden.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
So rufen Sie Anfrage-Tags in der Statistiktabelle auf
Die folgende Abfrage gibt die Abfragestatistiken in Intervallen von zehn Minuten zurück.
SELECT t.text,
t.request_tag,
t.execution_count,
t.avg_latency_seconds,
t.avg_rows,
t.avg_bytes
FROM SPANNER_SYS.QUERY_STATS_TOP_10MINUTE AS t
LIMIT 3;
Nehmen wir als Beispiel die folgenden Ergebnisse zu unserer Abfrage:
text | request_tag | execution_count | avg_latency_seconds | avg_rows | avg_bytes |
---|---|---|---|---|---|
SELECT SingerId, AlbumId, AlbumTitle FROM Albums | app=concert,env=dev,action=select | 212 | 0,025 | 21 | 2365 |
* aus den Bestellungen auswählen; | app=catalogsearch,env=dev,action=list | 55 | 0,02 | 16 | 33,35 |
SELECT SingerId, FirstName, LastName FROM Singers; | [Leerer String] | 154 | 0,048 | 42 | 486,33 |
In dieser Ergebnistabelle können Sie sehen, dass eine Abfrage, der Sie einen REQUEST_TAG
zugewiesen haben, in der Statistiktabelle erfasst wird. Wenn kein Anfrage-Tag zugewiesen ist, wird sie als leerer String angezeigt.
Für die getaggten Abfragen werden die Statistiken pro Tag aggregiert. Beispiel: Das Anfrage-Tag app=concert,env=dev,action=select
hat eine durchschnittliche Latenz von 0,025 Sekunden. Wenn kein Tag zugewiesen ist, werden die Statistiken pro Abfrage aggregiert. Beispiel: Die Abfrage in der dritten Zeile hat eine durchschnittliche Latenz von 0,048 Sekunden.
Transaktions-Tags
Ein optionales Transaktions-Tag kann einzelnen Transaktionen hinzugefügt werden.
Spanner gruppiert Statistiken nach Transaktions-Tag, was im Feld TRANSACTION_TAG
der Tabellen mit den Transaktionsstatistiken angezeigt wird.
Wann werden Transaktions-Tags verwendet?
Im Folgenden sind einige Szenarien aufgeführt, die sich für die Verwendung von Transaktions-Tags eignen.
- Quelle einer problematischen Transaktion ermitteln: Spanner erfasst Statistiken für Lese-Schreib-Transaktionen in der Tabelle mit den Transaktionsstatistiken. Wenn Sie in der Tabelle mit den Transaktionsstatistiken langsame Transaktionen sehen, denen Sie bereits Tags zugewiesen haben, können Sie auf Basis der Informationen im Tag die Quelle (Anwendung/Mikrodienst) ermitteln, die diese Transaktionen aufruft.
- Transaktionen in Statistiktabellen identifizieren: Durch Zuweisen von Transaktions-Tags können Zeilen in der Tabelle mit den Transaktionsstatistiken anhand der für Sie interessanten Tags gefiltert werden. Ohne Transaktions-Tags kann es mühsam sein, zu ermitteln, für welchen Vorgang eine Statistik steht. Für Transaktionsstatistiken müssten Sie beispielsweise die entsprechenden Tabellen und Spalten überprüfen, um die nicht getaggte Transaktion zu identifizieren.
- Ermitteln, ob Transaktionen von einer bestimmten Anwendung oder einem bestimmten Mikrodienst langsam sind: Mit Transaktions-Tags können Sie feststellen, ob Transaktionen einer bestimmten Anwendung oder eines bestimmten Mikrodienstes höhere Latenzen haben.
- Statistiken für mehrere Transaktionen gruppieren: Sie können Transaktions-Tags verwenden, um die Leistung für eine Reihe ähnlicher Transaktionen zu verfolgen, zu vergleichen und zu melden.
- Ermitteln, welche Transaktionen auf die Spalten zugreifen, die am Sperrkonflikt beteiligt sind: Durch Transaktions-Tags können in den Tabelle mit den Sperrstatistiken präzise einzelne Transaktionen angezeigt werden, die Sperrkonflikte verursachen.
- Änderungsdaten von Nutzern mit Änderungsstreams aus Spanner streamen: Änderungsstream-Datensätze enthalten Transaktions-Tags für die Transaktionen, die die Nutzerdaten geändert haben. So kann der Leser eines Änderungsstreams Änderungen basierend auf Tags dem Transaktionstyp zuordnen.
So weisen Sie Transaktions-Tags zu
Im folgenden Beispiel wird gezeigt, wie Transaktions-Tags mithilfe der Spanner-Clientbibliotheken festgelegt werden. Wenn Sie eine Clientbibliothek verwenden, können Sie zu Beginn des Transaktionsaufrufs ein Transaktions-Tag festlegen, das auf alle einzelnen Vorgänge innerhalb dieser Transaktion angewendet wird.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Transaktions-Tags in der Tabelle mit den Transaktionsstatistiken anzeigen
Die folgende Abfrage gibt die Transaktionsstatistiken in Intervallen von 10 Minuten zurück.
SELECT t.fprint,
t.transaction_tag,
t.read_columns,
t.commit_attempt_count,
t.avg_total_latency_seconds
FROM SPANNER_SYS.TXN_STATS_TOP_10MINUTE AS t
LIMIT 3;
Nehmen wir als Beispiel die folgenden Ergebnisse zu unserer Abfrage:
fprint | transaction_tag | read_columns | commit_attempt_count | avg_total_latency_seconds |
---|---|---|---|---|
40015598317 | app=concert,env=dev | [Venues._exists, Venues.VenueId, Venues.VenueName, Venues.Capacity] |
278802 | 0,3508 |
20524969030 | app=product,service=payment | [Singers.SingerInfo] | 129012 | 0.0142 |
77848338483 | [Leerer String] | [Singers.FirstName, Singers.LastName, Singers._exists] | 5357 | 0,048 |
In dieser Ergebnistabelle sehen Sie, dass eine Transaktion, der Sie einen TRANSACTION_TAG
zugewiesen haben, in der Tabelle mit den Transaktionsstatistiken erfasst wird. Wenn kein Transaktions-Tag zugewiesen ist, wird sie als leerer String angezeigt.
Für die getaggten Transaktionen werden die Statistiken pro Transaktions-Tag zusammengefasst. Beispiel: Das Transaktions-Tag app=concert,env=dev
hat eine durchschnittliche Latenz von 0,3508 Sekunden. Wenn kein Tag zugewiesen ist, werden die Statistiken pro FPRINT
aggregiert. Beispiel: 77848338483 in der dritten Zeile hat eine durchschnittliche Latenz von 0,048 Sekunden.
Transaktions-Tags in der Tabelle mit den Sperrstatistiken anzeigen
Die folgende Abfrage gibt die Sperrstatistiken über Intervalle von 10 Minuten zurück.
Die Funktion CAST()
konvertiert das BYTES-Feld row_range_start_key
in einen STRING.
SELECT
CAST(s.row_range_start_key AS STRING) AS row_range_start_key,
s.lock_wait_seconds,
s.sample_lock_requests
FROM SPANNER_SYS.LOCK_STATS_TOP_10MINUTE s
LIMIT 2;
Nehmen wir als Beispiel die folgenden Ergebnisse zu unserer Abfrage:
row_range_start_key | lock_wait_seconds | sample_lock_requests |
---|---|---|
Songs(2,1,1) | 0,61 | LOCK_MODE: ReaderShared COLUMN: Singers.SingerInfo TRANSACTION_TAG: app=product,service=shipping LOCK_MODE: WriterShared COLUMN: Singers.SingerInfo TRANSACTION_TAG: app=product,service=payment |
Alben(2,1+) | 0,48 | LOCK_MODE: ReaderShared COLUMN: users._exists1 TRANSACTION_TAG: [empty string] LOCK_MODE: WriterShared COLUMN: users._exists TRANSACTION_TAG: [empty string] |
In dieser Ergebnistabelle sehen Sie, dass eine Transaktion, der Sie einen TRANSACTION_TAG
zugewiesen haben, in der Tabelle mit den Sperrstatistiken erfasst wird. Wenn kein Transaktions-Tag zugewiesen ist, wird sie als leerer String angezeigt.
Zuordnung zwischen API-Methoden und Anfrage-/Transaktions-Tag
Anfrage- und Transaktions-Tags gelten für bestimmte API-Methoden, je nachdem, ob es sich um eine schreibgeschützte oder eine Lese-/Schreibtransaktion handelt. Im Allgemeinen gelten Transaktions-Tags für Lese-/Schreibtransaktionen, während Anfrage-Tags für schreibgeschützte Transaktionen gelten. In der folgenden Tabelle ist die Zuordnung von API-Methoden zu den entsprechenden Tag-Typen aufgeführt.
API-Methoden | Transaktionsmodi | Anfrage-Tag | Transaktions-Tag |
---|---|---|---|
Read, StreamingRead |
Schreibgeschützte Transaktion | Ja | Nein |
Lese-/Schreibtransaktion | Ja | Ja | |
ExecuteSql, ExecuteStreamingSql1 |
Schreibgeschützte Transaktion1 | Ja1 | Nein |
Lese-/Schreibtransaktion | Ja | Ja | |
ExecuteBatchDml | Lese-/Schreibtransaktion | Ja | Ja |
BeginTransaction | Lese-/Schreibtransaktion | Nein | Ja |
Commit | Lese-/Schreibtransaktion | Nein | Ja |
1: Bei Änderungsstreamabfragen, die mit dem Apache Beam SpannerIO Dataflow-Connector ausgeführt werden, enthält die REQUEST_TAG
den Namen eines Dataflow-Jobs.
Beschränkungen
Beachten Sie beim Hinzufügen von Tags zu Ihren Lesevorgängen, Abfragen und Transaktionen die folgenden Einschränkungen:
- Die Länge eines Tag-Strings ist auf 50 Zeichen begrenzt. Strings, die dieses Limit überschreiten, werden abgeschnitten.
- In einem Tag sind nur ASCII-Zeichen (32–126) zulässig. Beliebige Unicode-Zeichen werden durch Unterstriche ersetzt.
- Alle vorangestellten Unterstriche (_) werden aus dem String entfernt.
- Bei Tags wird zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie beispielsweise das Anfrage-Tag
APP=cart,ENV=dev
zu einem Satz von Abfragen hinzufügen undapp=cart,env=dev
zu einem anderen Satz von Abfragen hinzufügen, fasst Spanner Statistiken für jedes Tag getrennt zusammen. In den Statistiktabellen können Tags unter folgenden Umständen fehlen:
- Wenn Spanner keine Statistiken für alle während des Intervalls ausgeführten getaggten Vorgänge in Tabellen speichern kann, priorisiert das System Vorgänge mit den Ressourcen, die im angegebenen Intervall die höchste Auslastung haben.
Tag-Benennung
Wenn Sie Ihren Datenbankvorgängen Tags zuweisen, sollten Sie berücksichtigen, welche Informationen Sie in jedem Tag-String angeben möchten. Die von Ihnen gewählte Konvention oder das Muster macht Ihre Tags effektiver. Eine korrekte Tag-Benennung erleichtert beispielsweise die Korrelation von Statistiken mit dem Anwendungscode.
Innerhalb der angegebenen Einschränkungen können Sie ein beliebiges Tag auswählen. Wir empfehlen jedoch, einen Tag-String als Reihe von Schlüssel/Wert-Paaren zu erstellen, die durch Kommas getrennt sind.
Angenommen, Sie verwenden eine Spanner-Datenbank für einen E-Commerce-Anwendungsfall. Sie können Informationen zur Anwendung, zur Entwicklungsumgebung und zur Aktion, die durch die Abfrage ausgeführt wird, in das Anfrage-Tag aufnehmen, das Sie einer bestimmten Abfrage zuweisen. Sie können dem Tag-String im Schlüssel/Wert-Format app=cart,env=dev,action=update
zuweisen.Das bedeutet, dass die Abfrage von der Einkaufswagenanwendung in der Entwicklungsumgebung aufgerufen und zum Aktualisieren des Einkaufswagens verwendet wird.
Angenommen, Sie haben eine weitere Abfrage aus einer Katalog-Suchanwendung und weisen den Tag-String als app=catalogsearch,env=dev,action=list
zu. Wenn eine dieser Abfragen in der Abfragestatistiktabelle als Abfragen mit hoher Latenz angezeigt wird, können Sie die Quelle einfach durch das Tag identifizieren.
Hier sind einige Beispiele dafür, wie Sie mithilfe eines Tagging-Musters Ihre Betriebsstatistiken organisieren können. Diese Beispiele sind nicht vollständig. Sie können sie auch mit einem Trennzeichen wie einem Komma in Ihrem Tag-String kombinieren.
Tag-Schlüssel | Beispiele für Tag-Wert-Paare | Beschreibung |
---|---|---|
Anwendung | app=cart app=frontend app=catalogsearch |
Hilft beim Identifizieren der Anwendung, die den Vorgang aufruft. |
Umgebung | env=prod env=dev env=test env=staging |
Hilft beim Identifizieren der Umgebung, die mit dem Vorgang verknüpft ist. |
Framework | framework=spring framework=django framework=jetty |
Hilft beim Identifizieren des Frameworks, das mit dem Vorgang verknüpft ist. |
Aktion | action=list action=retrieve action=update |
Hilft beim Identifizieren der vom Vorgang ausgeführten Aktion. |
Dienst | service=payment service=shipping |
Hilft beim Identifizieren des Mikrodiensts, der den Vorgang aufruft. |
Weitere Hinweise
- Wenn Sie ein
REQUEST_TAG
zuweisen, werden Statistiken für mehrere Abfragen mit demselben Tag-String in einer einzigen Zeile in der Tabelle Abfragestatistiken gruppiert. Im FeldTEXT
wird nur der Text einer dieser Abfragen angezeigt. - Wenn Sie ein
REQUEST_TAG
zuweisen, werden Statistiken für mehrere Lesevorgänge mit demselben Tag-String in einer einzigen Zeile in der Lesestatistiktabelle gruppiert. Die gelesenen Spalten werden dem FeldREAD_COLUMNS
hinzugefügt. - Wenn Sie ein
TRANSACTION_TAG
zuweisen, werden Statistiken für Transaktionen mit demselben Tag-String in einer einzigen Zeile in der Tabelle mit den Transaktionsstatistiken gruppiert. Alle Spalten, die von den Transaktionen geschrieben werden, werden dem FeldWRITE_CONSTRUCTIVE_COLUMNS
und die gelesenen Spalten dem FeldREAD_COLUMNS
hinzugefügt.
Fehlerbehebungsszenarien mit Tags
Quelle einer problematischen Transaktion ermitteln
Die folgende Abfrage gibt die Rohdaten für die Top-Transaktionen im ausgewählten Zeitraum zurück.
SELECT
fprint,
transaction_tag,
ROUND(avg_total_latency_seconds,4) as avg_total_latency_sec,
ROUND(avg_commit_latency_seconds,4) as avg_commit_latency_sec,
commit_attempt_count,
commit_abort_count
FROM SPANNER_SYS.TXN_STATS_TOP_10MINUTE
WHERE interval_end = "2020-05-17T18:40:00"
ORDER BY avg_total_latency_seconds DESC;
Die folgende Tabelle enthält Beispieldaten, die von unserer Abfrage zurückgegeben wurden, wobei wir drei Anwendungen haben, nämlich Warenkorb, Produkt und Frontend, die dieselbe Datenbank besitzen oder abfragen.
Wenn Sie die Transaktionen mit hoher Latenz ermittelt haben, können Sie die zugehörigen Tags verwenden, um den relevanten Teil Ihres Anwendungscodes zu identifizieren und Fehler mithilfe von Transaktionsstatistiken weiter zu beheben.
fprint | transaction_tag | avg_total_latency_sec | avg_commit_latency_sec | commit_attempt_count | commit_abort_count |
---|---|---|---|---|---|
7129109266372596045 | app=cart,service=order | 0,3508 | 0,0139 | 278802 | 142205 |
9353100217060788102 | app=cart,service=redis | 0.1633 | 0.0142 | 129012 | 27177 |
9353100217060788102 | app=product,service=payment | 0.1423 | 0.0133 | 5357 | 636 |
898069986622520747 | app=product,service=shipping | 0.0159 | 0.0118 | 4269 | 1 |
9521689070912159706 | app=frontend,service=ads | 0.0093 | 0.0045 | 164 | 0 |
11079878968512225881 | [Leerer String] | 0,031 | 0,015 | 14 | 0 |
Ebenso kann das Anfrage-Tag verwendet werden, um die Quelle einer problematischen Abfrage aus der Abfragestatistiktabelle und die Quelle eines problematischen Lesevorgangs aus der Lesestatistiktabelle zu ermitteln.
Latenz und andere Statistiken für Transaktionen aus einer bestimmten Anwendung oder einem bestimmten Mikrodienst ermitteln
Wenn Sie den Namen der Anwendung oder des Mikrodienstes im Tag-String verwendet haben, erleichtert das die Filterung der Tabelle mit den Transaktionsstatistiken nach Tags, die diesen Anwendungsnamen oder Mikrodienstnamen enthalten.
Angenommen, Sie haben der Zahlungs-App neue Transaktionen hinzugefügt und möchten sich die Latenz und andere Statistiken dieser neuen Transaktionen ansehen. Wenn Sie den Namen der Zahlungsanwendung im Tag verwendet haben, können Sie die Tabelle mit den Transaktionsstatistiken nur nach den Tags filtern, die app=payment
enthalten.
Die folgende Abfrage gibt die Transaktionsstatistiken für die Zahlungs-App in Intervallen von 10 Minuten zurück.
SELECT
transaction_tag,
avg_total_latency_sec,
avg_commit_latency_sec,
commit_attempt_count,
commit_abort_count
FROM SPANNER_SYS.TXN_STATS_TOP_10MINUTE
WHERE STARTS_WITH(transaction_tag, "app=payment")
LIMIT 3;
Hier einige Ausgabebeispiele:
transaction_tag | avg_total_latency_sec | avg_commit_latency_sec | commit_attempt_count | commit_abort_count |
---|---|---|---|---|
app=payment,action=update | 0,3508 | 0,0139 | 278802 | 142205 |
app=payment,action=transfer | 0.1633 | 0.0142 | 129012 | 27177 |
app=payment, action=retrieve | 0.1423 | 0.0133 | 5357 | 636 |
Ebenso können Sie Abfragen oder Lesevorgänge aus einer bestimmten Anwendung in der Abfragestatistiktabelle oder in der Lesestatistiktabelle mithilfe von Anfrage-Tags ermitteln.
Transaktionen im Zusammenhang mit Sperrenkonflikten ermitteln
Um festzustellen, für welche Transaktionen und Zeilenschlüssel die hohen Wartezeiten für Sperren aufgetreten sind, fragen wir die Tabelle LOCK_STAT_TOP_10MINUTE
ab, in der die Zeilenschlüssel, Spalten und entsprechenden Transaktionen aufgeführt sind, die am Sperrkonflikt beteiligt sind.
SELECT CAST(s.row_range_start_key AS STRING) AS row_range_start_key,
t.total_lock_wait_seconds,
s.lock_wait_seconds,
s.lock_wait_seconds/t.total_lock_wait_seconds frac_of_total,
s.sample_lock_requests
FROM spanner_sys.lock_stats_total_10minute t, spanner_sys.lock_stats_top_10minute s
WHERE
t.interval_end = "2020-05-17T18:40:00" and s.interval_end = t.interval_end;
Hier einige Ausgabebeispiele aus unserer Abfrage:
row_range_start_key | total_lock_wait_seconds | lock_wait_seconds | frac_of_total | sample_lock_requests |
---|---|---|---|---|
Sänger(32) | 2,37 | 1,76 | 1 | LOCK_MODE: WriterShared COLUMN: Singers.SingerInfo TRANSACTION_TAG: app=cart,service=order LOCK_MODE: ReaderShared COLUMN: Singers.SingerInfo TRANSACTION_TAG: app=cart,service=redis |
In dieser Ergebnistabelle sehen Sie, dass der Konflikt in der Tabelle Singers
unter dem Schlüssel SingerId=32 aufgetreten ist. Die Singers.SingerInfo
ist die Spalte, in der der Sperrkonflikt zwischen ReaderShared
und WriterShared
aufgetreten ist. Sie können auch die entsprechenden Transaktionen (app=cart,service=order
und app=cart,service=redis
) identifizieren, bei denen der Konflikt auftritt.
Sobald die Transaktionen identifiziert wurden, die die Sperrkonflikte verursacht haben, können Sie sich mithilfe von Transaktionsstatistiken auf diese Transaktionen konzentrieren, um besser zu verstehen, was die Transaktionen tun und ob Sie Konflikte vermeiden können oder die Zeit verkürzen können, für die die Sperren aufrechterhalten werden. Weitere Informationen finden Sie unter Best Practices zur Reduzierung von Sperrkonflikten.
Nächste Schritte
- Weitere Informationen zu Tools zur Selbstbeobachtung
- Weitere Informationen zu dem, was Spanner für jede Datenbank in den Informationsschematabellen der Datenbank speichert
- SQL-Best Practices für Spanner
- Hohe CPU-Auslastung untersuchen