Pour vous aider à mieux comprendre, optimiser et diagnostiquer les problèmes de transaction, Spanner vous donne accès à des statistiques sur les commits de transactions. Actuellement, vous pouvez récupérer le nombre total de mutations pour une transaction.
Quand utiliser les statistiques de commit ?
La connaissance du nombre de mutations pour une transaction peut être utile dans les scénarios suivants.
Optimiser pour les allers-retours
Pour améliorer les performances de votre application, vous pouvez réduire le nombre d'allers-retours vers la base de données en effectuant autant de travail que possible dans chaque transaction. Dans ce scénario, vous souhaitez optimiser le nombre de mutations par transaction, tout en respectant les limites du système.
Pour déterminer le nombre de lignes que vous pouvez valider par transaction tout en restant en deçà de la limite, commencez par valider une ligne d'une transaction. Vous obtenez ainsi une référence du nombre de mutations par ligne. Vous devez ensuite diviser la limite système par votre référence pour obtenir un nombre de lignes par transaction. Pour plus d'informations sur le comptage des mutations, reportez-vous à cette note.
Notez que l'optimisation des allers-retours n'est pas toujours bénéfique, en particulier si elle entraîne davantage de conflits de verrouillage. Vous pouvez résoudre les conflits de verrouillage dans votre base de données à l'aide des statistiques de verrouillage.
Surveillez vos transactions pour éviter d'atteindre les limites du système
À mesure que l'utilisation des applications augmente, il est possible que le nombre de mutations dans vos transactions augmente également. Pour éviter d'atteindre la limite du système et de créer des échecs de transaction, vous pouvez surveiller de manière proactive la statistique de commit du nombre de mutations au fil du temps. Si vous constatez que cette valeur augmente pour la même transaction, il est peut-être temps de l'optimiser comme décrit dans la section précédente.
Accéder aux statistiques de commit
Les statistiques de commit ne sont pas renvoyées par défaut. Au lieu de cela, vous devez définir l'indicateur return_commit_stats
sur "true" pour chaque CommitRequest. Si votre tentative de commit dépasse le nombre maximal de mutations autorisé pour une transaction, le commit échoue et une erreur INVALID_ARGUMENT est renvoyée.
Voici un exemple de renvoi de statistiques de commit à l'aide des bibliothèques clientes Spanner.
Récupérer les statistiques de commit
L'exemple suivant montre comment obtenir des statistiques de commit à l'aide des bibliothèques clientes Spanner.
C++
Le code suivant appelle set_return_stats()
sur CommitOptions
et renvoie un nombre de mutations de 6, car nous insérons ou mettons à jour deux lignes et trois colonnes dans chaque ligne.
C#
En C#, les statistiques de commit ne sont pas renvoyées directement via l'API. Au lieu de cela, elles sont enregistrées au niveau du journal Informations par l'enregistreur par défaut.
Le code suivant active la journalisation des statistiques de commit pour toutes les transactions en définissant la propriété LogCommitStats
de SpannerConnectionStringBuilder
sur "true". Le code met également en œuvre un exemple d'enregistreur qui conserve une référence à la dernière réponse de commit observée. Le MutationCount
est ensuite extrait de cette réponse et affiché.
Go
Le code suivant définit l'option ReturnCommitStats
et affiche le nombre de mutations une fois la transaction validée.
Java
Node.js
Le code suivant définit l'option returnCommitStats
et renvoie un nombre de mutations de 6, car nous insérons ou mettons à jour deux lignes et trois colonnes dans chaque ligne.
PHP
Python
Au lieu de renvoyer les statistiques de commit directement via l'API, la bibliothèque cliente Python les consigne à l'aide de stdout
au niveau Info
.
Le code suivant active la journalisation des statistiques de commit pour toutes les transactions en définissant database.log_commit_stats = True
. Le code met également en œuvre un exemple d'enregistreur qui conserve une référence à la dernière réponse de commit observée. Le mutation_count
est ensuite extrait de cette réponse et affiché.
Ruby
Le code suivant définit l'option return_commit_stats
et renvoie un nombre de mutations de 6, car nous insérons ou mettons à jour deux lignes et trois colonnes dans chaque ligne.