Descripción general del tiempo de actividad (TTL)

El tiempo de actividad (TTL) te permite establecer políticas para borrar datos periódicamente de Tablas de Spanner. Eliminación de los datos innecesarios:

  • Disminuye los costos de almacenamiento y copia de seguridad.
  • Reduce la cantidad de filas que la base de datos tiene que analizar en busca de algunas consultas. lo que podría aumentar el rendimiento de las consultas.
  • Ayuda a cumplir con las reglamentaciones o los lineamientos de la industria que limitan las el tiempo de retención de ciertos tipos de datos.

El TTL es ideal para actividades de limpieza regulares. Se ejecuta de forma continua en las en segundo plano y borra periódicamente los datos aptos por lotes. Por lo general, los datos se borran en un plazo de 72 horas después de su fecha de vencimiento. El TTL no cambia de inmediato invalidar datos u ocultarlos de las consultas cuando sean aptos para borrarlos. El TTL tampoco verifica los datos mientras se insertan, por lo que no te bloquea insertar una fila con una marca de tiempo vencida.

El TTL está diseñado para minimizar el impacto en otras actividades de la base de datos. Paraleliza funcionan de forma más eficiente que las consultas de los usuarios finales y, además, incluye una lógica de reintento para garantizar la limpieza de extremo a extremo.

Otro proceso de compactación en segundo plano recupera el almacenamiento de filas borradas, normalmente, en un plazo de siete días.

¿Cómo funciona el TTL?

Puedes configurar el TTL en las tablas de Spanner si defines una eliminación de filas. política en el esquema de la base de datos, lo que permite que Spanner y borrar periódicamente los datos innecesarios. Cada tabla puede tener su propia política. Solo uno La política de TTL se puede especificar por tabla. Configuraste el TTL de manera diferente Bases de datos de dialectos de GoogleSQL y bases de datos de dialectos de PostgreSQL.

TTL con GoogleSQL

Con GoogleSQL, defines una política de eliminación de filas especificando Una marca de tiempo y un intervalo para determinar cuándo una fila es apta para borrarse por ejemplo, la fecha de la última actualización más 30 días.

Un proceso del sistema en segundo plano verifica a diario las filas aptas. Paraleliza la eliminaciones reales en lotes que se ejecutan cerca de donde se almacenan los datos internamente. Cada lote se ejecuta en su propia transacción con una marca de tiempo coherente. Así, las filas de un lote determinado, junto con los índices y los elementos secundarios intercalados, se garantiza que se borrarán de forma atómica. Sin embargo, las eliminaciones en lotes se llevan a cabo en diferentes transacciones.

Como se trata de un proceso asíncrono en segundo plano, existe una demora entre la elegibilidad y la eliminación. Por lo general, la demora es menor a 72 horas. Como resultado, es posible que las filas permanezcan en tu tabla hasta tres días después de que su TTL vencido; por ejemplo, una tabla con una política de eliminación de filas que borra las filas más antiguas de más de cuatro días puede incluir filas de hasta siete días de antigüedad y otras más antiguas, filas no borrables.

Para obtener instrucciones paso a paso sobre cómo crear una fila de GoogleSQL de eliminación, consulta Crea una política de TTL.

TTL con PostgreSQL

Con PostgreSQL, el propietario de una base de datos puede usar una cláusula TTL INTERVAL en la sentencia CREATE TABLE o ALTER TABLE para definir una política de eliminación de filas.

Para establecer una política de eliminación de filas en una tabla de PostgreSQL, la tabla debe tienes una columna con el tipo de datos TIMESTAMPTZ. La cláusula TTL INTERVAL usa esta columna para establecer una especificación de intervalo para cuando una fila sea apta para y la eliminación de datos.

La cláusula debe evaluar como un número entero de días. Por ejemplo, si se permite '3 DAYS', al igual que '4 DAYS 2 MINUTES - 2 MINUTES', pero '4 DAYS 3 MINUTES' no está permitido y se muestra un error. No puedes usar palabras clave negativas y números de serie.

La recolección de elementos no utilizados del TTL borra las filas aptas de forma continua y en segundo plano. Debido a que este es un proceso asíncrono en segundo plano, existe una demora entre la elegibilidad y la eliminación. Es posible que la tabla contenga filas aptas para el TTL eliminación, pero para el que aún no se completó el TTL. Por lo general, la demora es menor más de 72 horas.

Si deseas obtener instrucciones para crear una política de eliminación de filas de PostgreSQL, consulta Crea una política de TTL.

Copias de seguridad y TTL

Restablecer una copia de seguridad

Cuando restableces una base de datos a partir de una copia de seguridad, las políticas de eliminación de filas que se hayan configurados en la base de datos de origen se descartan automáticamente. Esto evita Spanner puede evitar que borre los datos vencidos en cuanto se restableció la copia de seguridad. Por lo tanto, deberás volver a configurar el TTL de forma manual.

Coherencia de los datos

Una copia de seguridad es una instantánea coherente de tus datos en un en un momento determinado (version_time). La copia de seguridad puede contener filas podría ser apto para la eliminación del TTL, pero este aún no se completó. De manera similar, los trabajos de exportación de Dataflow leen toda la tabla de forma marca de tiempo fija.

Auditoría

El TTL admite auditar sus eliminaciones a través de flujos de cambios. Los registros de datos de flujos de cambios que realizan un seguimiento de los cambios de TTL en una base de datos tienen transaction_tag establecido en RowDeletionPolicy y el Se estableció el campo is_system_transaction en true. En ese caso, los lectores de flujos filtrar todos los registros de TTL o todos los registros excepto el de TTL según su caso de uso. Vea un ejemplo de cómo usar Beam para filtrar etiquetas de transacción.