En esta página se describe cómo configurar el tiempo máximo de latencia de confirmación (escritura) para optimizar el rendimiento de escritura en Spanner.
Información general
Para asegurar la coherencia de los datos, Spanner envía solicitudes de escritura a todas las réplicas de voto de la base de datos. Este proceso de replicación puede tener una sobrecarga computacional. Para obtener más información, consulta Replicación.
Las escrituras optimizadas para el rendimiento ofrecen la opción de amortizar estos costes de computación ejecutando un grupo de escrituras a la vez. Para ello, Spanner introduce un pequeño retraso y recoge un grupo de escrituras que deben enviarse a los mismos participantes de la votación. Ejecutar escrituras de esta forma puede proporcionar mejoras significativas en el rendimiento a costa de un ligero aumento de la latencia.
Comportamiento predeterminado
Si no defines un tiempo de espera de confirmación, Spanner podría establecer un pequeño tiempo de espera por ti si cree que eso amortizará el coste de tus escrituras.
Casos prácticos habituales
Puedes definir manualmente el tiempo de espera de tus solicitudes de escritura en función de las necesidades de tu aplicación. También puedes inhabilitar los retrasos de confirmación de las aplicaciones que sean muy sensibles a la latencia. Para ello, define el tiempo máximo de retraso de confirmación en 0 ms.
Si tienes una aplicación tolerante a la latencia y quieres optimizar el rendimiento, definir un tiempo de latencia de confirmación más largo mejora significativamente el rendimiento, pero aumenta la latencia de cada escritura. Por ejemplo, si vas a cargar en bloque una gran cantidad de datos y la aplicación no necesita que Spanner escriba los datos rápidamente, puedes definir el tiempo de espera de confirmación en un valor más largo, como 100 ms. Te recomendamos que empieces con un valor de 100 ms y, después, lo aumentes o lo disminuyas hasta que el equilibrio entre la latencia y el rendimiento se ajuste a tus necesidades. En la mayoría de las aplicaciones, un valor entre 20 y 100 ms funciona mejor.
Si tienes una aplicación sensible a la latencia, Spanner también lo es de forma predeterminada. Si tienes una carga de trabajo irregular, es posible que Spanner establezca un pequeño retraso. Puedes experimentar con el valor 0 ms para determinar si la latencia reducida a costa de un mayor rendimiento es razonable para tu aplicación.
Definir tiempos de retraso de confirmación mixta
Puedes configurar diferentes tiempos de retraso de confirmación máximos en subconjuntos de tus escrituras. Si lo haces, Spanner usará el tiempo de espera más corto configurado para el conjunto de escrituras. Sin embargo, te recomendamos que elijas un solo valor en la mayoría de los casos prácticos, ya que así el comportamiento será más predecible.
Limitaciones
Puedes definir un tiempo de retraso de confirmación entre 0 y 500 ms. Si el retraso de confirmación es superior a 500 ms, se producirá un error.
Definir el retraso máximo de confirmación en las solicitudes de confirmación
El parámetro de retraso máximo de confirmación forma parte del método CommitRequest
. Puedes acceder a este método con la API RPC, la API REST o la biblioteca cliente de Cloud Spanner.
C#
Go
Java
Node.js
Python
Ruby
Monitorizar la latencia de las solicitudes de escritura
Puedes monitorizar la utilización de la CPU y la latencia de Spanner mediante la consola.Google Cloud Si aumentas el tiempo de espera de tus solicitudes de escritura, es posible que la utilización de la CPU disminuya, mientras que la latencia aumente. Para obtener información sobre la latencia de las solicitudes de Spanner, consulta Capturar y visualizar la latencia de las solicitudes de la API de Spanner.