Para ayudarte a comprender, optimizar y diagnosticar mejor los problemas de transacciones, Spanner te brinda acceso a las estadísticas de confirmación de transacciones. Por el momento, puedes recuperar la totalidad de mutaciones de una transacción.
Cuándo usar las estadísticas de confirmación
Conocer el recuento de mutaciones de una transacción puede ser útil en las siguientes situaciones.
Optimizar para recorridos de ida y vuelta
Para ayudar a mejorar el rendimiento de tu aplicación, puedes reducir la cantidad de viajes de ida y vuelta a la base de datos si haces todo el trabajo posible en cada transacción. En esta situación, es importante maximizar la cantidad de mutaciones por transacción y, al mismo tiempo, mantenerte dentro de los límites del sistema.
Para determinar cuántas filas puedes confirmar por transacción mientras te mantienes por debajo del límite, primero confirma una fila en una transacción. Esto te brinda un modelo de referencia del recuento de mutaciones por fila. Luego, divide el límite del sistema por el modelo de referencia para obtener un número de filas por transacción. Para obtener más información sobre cómo se cuentan las mutaciones, consulta esta nota.
Ten en cuenta que la optimización para viajes de ida y vuelta no siempre es beneficiosa, en especial si genera más contenciones de bloqueo. Puedes solucionar problemas de bloqueo en la base de datos mediante estadísticas de bloqueo.
Supervisa tus transacciones para evitar alcanzar los límites del sistema
A medida que aumenta el uso de la aplicación, es posible que la cantidad de mutaciones en tu transacción también aumente. Para evitar alcanzar el límite del sistema y hacer que la transacción falle en algún momento, puedes supervisar de forma proactiva las estadísticas de confirmación del recuento de mutaciones a lo largo del tiempo. Si observas que este valor aumenta para la misma transacción, puede ser hora de volver a optimizar la transacción, como se describe en la sección anterior.
Cómo acceder a las estadísticas de confirmación
De forma predeterminada, las estadísticas de confirmaciones no se muestran. En cambio, debes establecer la marca return_commit_stats
como verdadera en cada CommitRequest. Si tu intento de confirmación supera la cantidad máxima de mutaciones permitidas para una transacción, la confirmación falla y se muestra el error INVALID_ARGUMENT.
Aquí hay un ejemplo de cómo mostrar estadísticas de confirmación con las bibliotecas cliente de Spanner.
Recupera estadísticas de confirmación
En el siguiente ejemplo, se muestra cómo obtener estadísticas de confirmación mediante las bibliotecas cliente de Spanner.
C++
El siguiente código llama a set_return_stats()
en CommitOptions
y muestra un recuento de mutaciones de 6, ya que insertamos o actualizamos 2 filas y 3 columnas en cada fila.
C#
En C#, las estadísticas de confirmación no se muestran directamente a través de la API. En cambio, se registran en el nivel de registro Información por el registrador predeterminado.
El siguiente código habilita el registro de las estadísticas de confirmaciones para todas las transacciones si se configura la propiedad LogCommitStats
en SpannerConnectionStringBuilder
como verdadera. El código también implementa un registrador de muestra que mantiene una referencia a la última respuesta de confirmación vista. El MutationCount
se recupera de esta respuesta y se muestra.
Go
Con el siguiente código, se establece la marca ReturnCommitStats
y se imprime el recuento de mutaciones cuando la transacción se confirma de forma correcta.
Java
Node.js
En el siguiente código, se establece la marca returnCommitStats
y se muestra un recuento de mutaciones de 6, ya que insertamos o actualizamos 2 filas y 3 columnas en cada fila.
PHP
Python
En lugar de mostrar estadísticas de confirmación directamente a través de la API, la biblioteca cliente de Python las registra mediante stdout
en el nivel Info
.
El siguiente código habilita el registro de estadísticas de confirmaciones para todas las transacciones mediante la configuración de database.log_commit_stats = True
. El código también implementa un registrador de muestra que mantiene una referencia a la última respuesta de confirmación vista. El mutation_count
se recupera de esta respuesta y se muestra.
Ruby
En el siguiente código, se establece la marca return_commit_stats
y se muestra un recuento de mutaciones de 6, ya que insertamos o actualizamos 2 filas y 3 columnas en cada fila.