En esta página, se describe cómo configurar el tiempo máximo de demora 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 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 la capacidad de procesamiento proporcionan la opción de amortizar estos costos de procesamiento mediante la ejecución conjunta de un grupo de escrituras. Para ello, Spanner introduce una pequeña demora y recopila un grupo de escrituras que deben enviarse a los mismos participantes de votación. La ejecución de escrituras de esta manera puede proporcionar mejoras sustanciales en la capacidad de procesamiento a costa de una latencia ligeramente mayor.
Comportamiento predeterminado
Si no estableces un tiempo de demora de confirmación, es posible que Spanner establezca una pequeña demora por ti si cree que eso amortizará el costo de tus escrituras.
Casos de uso habituales
Puedes establecer de forma manual el tiempo de demora de tus solicitudes de escritura según las necesidades de tu aplicación. También puedes inhabilitar las demoras de confirmación para las aplicaciones que son muy sensibles a la latencia si estableces el tiempo máximo de demora de confirmación en 0 ms.
Si tienes una aplicación tolerante a la latencia y quieres optimizar la capacidad de procesamiento, establecer un tiempo de demora de confirmación más largo mejora significativamente la capacidad de procesamiento y genera una latencia más alta 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 datos individuales, puedes establecer el tiempo de demora 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 las compensaciones de latencia y capacidad de procesamiento satisfagan tus necesidades. Para 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 picos, es posible que Spanner establezca una pequeña demora. Puedes experimentar con establecer un valor de 0 ms para determinar si la latencia reducida a costa de una mayor capacidad de procesamiento es razonable para tu aplicación.
Establece tiempos de demora de confirmación mixtos
Puedes configurar diferentes tiempos máximos de demora de confirmación en subconjuntos de tus escrituras. Si lo haces, Spanner usa el tiempo de demora más corto configurado para el conjunto de escrituras. Sin embargo, te recomendamos que elijas 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 demora de confirmación entre 0 y 500 ms. Si estableces demoras de confirmación superiores a 500 ms, se produce un error.
Establece la demora máxima de confirmación en las solicitudes de confirmación
El parámetro de demora máxima de confirmación forma parte del método CommitRequest. Puedes acceder
a este método con la API de RPC,
API de REST,
o la biblioteca cliente de Cloud Spanner.
C#
Go
Java
Node.js
Python
Ruby
Supervisa la latencia de las solicitudes de escritura
Puedes supervisar el uso de CPU y la latencia de Spanner con la Google Cloud consola. Cuando estableces un tiempo de demora más largo para tus solicitudes de escritura, es posible que veas que el uso de CPU potencialmente disminuye, mientras que la latencia aumenta. 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.