Para ayudarte a entender, optimizar y diagnosticar mejor los problemas de las transacciones, Spanner te da acceso a estadísticas de confirmación de transacciones. Actualmente, puedes obtener el número total de mutaciones de una transacción.
Cuándo usar las estadísticas de confirmación
Conocer el número de mutaciones de una transacción puede ser útil en los siguientes casos.
Optimizar los viajes de ida y vuelta
Para mejorar el rendimiento de tu aplicación, puedes reducir el número de viajes de ida y vuelta a la base de datos haciendo todo el trabajo posible en cada transacción. En este caso, quieres maximizar el número 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 sin superar el límite, primero confirma una fila en una transacción. De esta forma, obtendrás una base de referencia del número de mutaciones por fila. Después, divide el límite del sistema entre tu valor de referencia para obtener el número de filas por transacción. Para obtener más información sobre cómo se contabilizan las mutaciones, consulta esta nota.
Ten en cuenta que optimizar los viajes de ida y vuelta no siempre es beneficioso, sobre todo si provoca más conflictos de bloqueo. Puedes solucionar problemas de conflictos de bloqueo en tu base de datos mediante estadísticas de bloqueo.
Monitorizar tus transacciones para no alcanzar los límites del sistema
A medida que aumenta el uso de la aplicación, es posible que también aumente el número de mutaciones en tu transacción. Para evitar alcanzar el límite del sistema y que tu transacción falle, puedes monitorizar de forma proactiva la estadística de confirmación del recuento de mutaciones a lo largo del tiempo. Si observa que este valor aumenta en la misma transacción, puede que sea el momento de volver a optimizarla, tal como se describe en la sección anterior.
Cómo acceder a las estadísticas de confirmaciones
Las estadísticas de confirmación no se devuelven de forma predeterminada. En su lugar, debes definir la marca return_commit_stats
como true en cada CommitRequest. Si el número de mutaciones de tu intento de confirmación supera el máximo permitido para una transacción, la confirmación fallará y se devolverá un error INVALID_ARGUMENT.
A continuación, se muestra un ejemplo de cómo devolver estadísticas de confirmación mediante las bibliotecas de cliente de Spanner.
Extraer estadísticas de confirmación
En el siguiente ejemplo se muestra cómo obtener estadísticas de confirmación mediante las bibliotecas de cliente de Spanner.
C++
El siguiente código llama a set_return_stats()
en CommitOptions
y devuelve 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 devuelven directamente a través de la API. En su lugar, el registrador predeterminado los registra en el nivel de registro Información.
El siguiente código habilita el registro de estadísticas de confirmación para todas las transacciones asignando el valor true a la propiedad LogCommitStats
de SpannerConnectionStringBuilder
. El código también implementa un registrador de ejemplo que mantiene una referencia a la última respuesta de confirmación vista. A continuación, se recupera el MutationCount
de esta respuesta y se muestra.
Go
El siguiente código define la marca ReturnCommitStats
e imprime el número de mutaciones cuando la transacción se confirma correctamente.
Java
Node.js
El siguiente código define la marca returnCommitStats
y devuelve un recuento de mutaciones de 6, ya que insertamos o actualizamos 2 filas y 3 columnas en cada fila.
PHP
Python
En lugar de devolver las estadísticas de confirmación directamente a través de la API, la biblioteca de cliente de Python las registra mediante stdout
en el nivel Info
.
El siguiente código habilita el registro de estadísticas de confirmación de todas las transacciones definiendo database.log_commit_stats = True
. El código también implementa un
registrador de ejemplo que mantiene una referencia a la última respuesta de confirmación vista. A continuación, se recupera el mutation_count
de esta respuesta y se muestra.
Ruby
El siguiente código define la marca return_commit_stats
y devuelve un recuento de mutaciones de 6, ya que insertamos o actualizamos 2 filas y 3 columnas en cada fila.