En esta página, se describe cómo configurar el tiempo de retraso máximo de confirmación (escritura) para optimizar la capacidad de procesamiento de escritura en Spanner.
Descripción general
Para garantizar la coherencia de los datos, Spanner envía solicitudes de escritura a todas las réplicas de votación en la base de datos. Este proceso de replicación puede tener sobrecarga computacional. Para obtener más información, consulta Replicación.
Las escrituras optimizadas para la capacidad de procesamiento ofrecen la opción de amortizar estos costos de procesamiento ejecutando un grupo de escrituras juntas. Para ello, Spanner introduce una pequeña demora y recopila un grupo de escrituras que se deben enviar a los mismos participantes votantes. Ejecutar escrituras de esta manera puede proporcionar mejoras sustanciales en la capacidad de procesamiento a costa de una latencia ligeramente aumentada.
Comportamiento predeterminado
Si no estableces un tiempo de retraso de confirmación, Spanner podría establecer un retraso pequeño si considera que amortizará el costo de las operaciones de escritura.
Casos de uso habituales
Puedes configurar de forma manual el tiempo de demora de las solicitudes de escritura según las necesidades de tu aplicación. También puedes inhabilitar los retrasos de confirmación para las aplicaciones que son muy sensibles a la latencia si estableces el tiempo máximo de retraso de confirmación en 0 ms.
Si tienes una aplicación tolerante a la latencia y deseas optimizar la capacidad de procesamiento, establecer un tiempo de retraso de confirmación más largo mejora de forma significativa la capacidad de procesamiento mientras se genera una mayor latencia para cada escritura. Por ejemplo, si cargas de forma masiva una gran cantidad de datos y a la aplicación no le importa la rapidez con la que Spanner escribe los datos individuales, puedes establecer el tiempo de retraso de confirmación en un valor más largo, como 100 ms. Te recomendamos que comiences con un valor de 100 ms y, luego, lo ajustes hacia arriba y hacia abajo hasta que satisfagas tus necesidades de latencia y capacidad de procesamiento. En la mayoría de las aplicaciones, un valor entre 20 ms y 100 ms funciona mejor.
Si tienes una aplicación sensible a la latencia, Spanner también es sensible a la latencia de forma predeterminada. Si tienes una carga de trabajo con un aumento repentino, Spanner puede establecer una pequeña demora. Puedes experimentar con la configuración de un valor de 0 ms para determinar si la latencia reducida a costa de un aumento de la capacidad de procesamiento es razonable para tu aplicación.
Configurar tiempos de retraso de confirmación mixta
Puedes configurar diferentes tiempos de retraso máximo de confirmación en subconjuntos de escrituras. Si haces esto, Spanner usa el tiempo de retraso más corto configurado para el conjunto de escrituras. Sin embargo, te recomendamos elegir un solo valor para la mayoría de los casos de uso, ya que esto genera un comportamiento más predecible.
Limitaciones
Puedes establecer un tiempo de retraso de confirmación de entre 0 y 500 ms. Si se configuran retrasos de confirmación superiores a 500 ms, se generará un error.
Configurar 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 de RPC, la API de REST o con la biblioteca cliente de Cloud Spanner.
Go
Node.js
Python
Rita
Supervisa la latencia de las solicitudes de escritura
Puedes supervisar el uso y la latencia de CPU de Spanner con la consola de Google Cloud. Cuando establezcas un tiempo de demora más largo para tus solicitudes de escritura, es probable que se produzca una disminución potencial del uso de CPU mientras aumenta la latencia. Para obtener información sobre la latencia en las solicitudes de Spanner, consulta Captura y visualiza la latencia de las solicitudes a la API de Spanner.