Damit Sie Transaktionsprobleme besser verstehen, optimieren und diagnostizieren können, bietet Spanner Zugriff auf Statistiken zu Transaktions-Commits. Derzeit können Sie die Gesamtzahl der Mutationen für eine Transaktion abrufen.
Wann Commit-Statistiken nützlich sind
Die Anzahl der Mutationen für eine Transaktion zu kennen, kann in den folgenden Szenarien hilfreich sein.
Für Hin- und Rückflug optimieren
Zur Verbesserung der Leistung Ihrer Anwendung können Sie die Anzahl der Umläufe zur Datenbank reduzieren, indem Sie bei jeder Transaktion so viele Aufgaben wie möglich erledigen. In diesem Szenario möchten Sie die Anzahl der Mutationen pro Transaktion maximieren und gleichzeitig innerhalb der Systemgrenzen bleiben.
Um zu ermitteln, wie viele Zeilen Sie pro Transaktion mit Commit unter dem Limit festschreiben können, führen Sie zuerst einen Commit für eine Zeile in einer Transaktion durch. Dies gibt Ihnen eine Basislinie für die Mutationszahl pro Zeile. Teilen Sie dann das Systemlimit durch Ihre Referenz, um die Anzahl der Zeilen pro Transaktion zu erhalten. Weitere Informationen zum Zählen von Mutationen finden Sie in diesem Hinweis.
Beachten Sie, dass die Optimierung für Umläufe nicht immer vorteilhaft ist, insbesondere wenn dies zu mehr Sperrkonflikten führt. Sie können Sperrkonflikte in Ihrer Datenbank mithilfe von Sperrstatistiken lösen.
Transaktionen im Blick behalten, um das Überschreiten der Systemlimits zu vermeiden
Wenn die Anwendungsnutzung zunimmt, ist es möglich, dass auch die Anzahl der Mutationen in Ihrer Transaktion zunimmt. Um zu verhindern, dass das Systemlimit erreicht wird und Ihre Transaktion schließlich fehlschlägt, können Sie die Commit-Statistik der Mutationszahl im Laufe der Zeit proaktiv überwachen. Wenn dieser Wert für dieselbe Transaktion steigt, kann es an der Zeit sein, die Transaktion wie im vorherigen Abschnitt beschrieben neu zu optimieren.
Commit-Statistiken aufrufen
Commit-Statistiken werden standardmäßig nicht zurückgegeben. Stattdessen müssen Sie das Flag return_commit_stats
bei jeder CommitRequest auf "true" setzen. Wenn Ihr Commit-Versuch die maximal zulässige Anzahl von Mutationen für eine Transaktion überschreitet, schlägt der Commit fehl und der Fehler INVALID_ARGUMENT wird zurückgegeben.
Im Folgenden finden Sie ein Beispiel für die Rückgabe von Commit-Statistiken mithilfe der Spanner-Clientbibliotheken.
Commit-Statistiken abrufen
Im folgenden Beispiel wird gezeigt, wie Sie Commit-Statistiken mithilfe der Spanner-Clientbibliotheken abrufen.
C++
Der folgende Code ruft set_return_stats()
auf CommitOptions
auf und gibt eine Mutationszahl von 6 zurück, da wir in jeder Zeile zwei Zeilen und drei Spalten einfügen oder aktualisieren.
C#
In C# werden Commit-Statistiken nicht direkt über die API zurückgegeben. Sie werden stattdessen vom Standard-Logger auf die Logebene Informationen protokolliert.
Mit dem folgenden Code wird das Commit-Statistik-Logging für alle Transaktionen aktiviert. Setzen Sie dazu das Attribut LogCommitStats
in SpannerConnectionStringBuilder
auf "true". Der Code implementiert auch einen Beispiel-Logger, der einen Verweis auf die zuletzt erfasste Commit-Antwort speichert. Der MutationCount
wird dann aus dieser Antwort abgerufen und angezeigt.
Einfach loslegen (Go)
Mit dem folgenden Code wird das Flag ReturnCommitStats
festgelegt und die Mutationsanzahl ausgegeben, wenn die Transaktion erfolgreich übergeben wurde.
Java
Node.js
Der folgende Code legt das Flag returnCommitStats
fest und gibt eine Mutationszahl von 6 zurück, da wir in jeder Zeile zwei Zeilen und drei Spalten einfügen oder aktualisieren.
PHP
Python
Anstatt Commit-Statistiken direkt über die API zurückzugeben, protokolliert die Python-Clientbibliothek sie mit stdout
auf der Ebene Info
.
Der folgende Code aktiviert das Commit-Statistik-Logging für alle Transaktionen durch Festlegen von database.log_commit_stats = True
. Der Code implementiert auch einen Beispiel-Logger, der einen Verweis auf die zuletzt erfasste Commit-Antwort speichert. Der mutation_count
wird dann aus dieser Antwort abgerufen und angezeigt.
Ruby
Der folgende Code legt das Flag return_commit_stats
fest und gibt eine Mutationszahl von 6 zurück, da wir in jeder Zeile zwei Zeilen und drei Spalten einfügen oder aktualisieren.