Expiring data with time-to-live

Columns and tables support an optional expiration period called TTL (time-to-live); TTL is not supported on counter columns. Define the TTL value in seconds. Data expires once it exceeds the TTL period and is then marked with a tombstone. During the grace period, expired data is still stored as tombstoned data in the database. Tombstoned data is scanned by database read operations, but will not be included in the returned data. See gc_grace_seconds. Normal compaction and repair processes automatically remove the tombstone data.

  • TTL precision is one second, which is calculated by the coordinator node. When setting a TTL, ensure that all nodes in the cluster have synchronized clocks.

  • A very short TTL is not useful.

  • Expiring data uses additional 8 bytes of memory and disk space to record the TTL and grace period.

The database storage engine can only encode TTL timestamps through January 19 2038 03:14:07 UTC due to the Year 2038 problem. The TTL date overflow policy determines whether requests with expiration timestamps later than the maximum date are rejected or inserted. See -Dcassandra.expiration_date_overflow_policy.

Setting a TTL for a specific column

Use CQL to set the TTL.

To change the TTL of a specific column, you must re-insert the data with a new TTL. The database upserts the column with the new TTL.

To remove the TTL from a column, set the TTL to zero. For details, see the UPDATE documentation.

Setting a TTL for a table

Use CREATE TABLE or ref:reference:cql-commands/alter-table.adoc[ALTER TABLE] to define the default_time_to_live property for all columns in a table. If any column exceeds TTL, the entire row is deleted.

For details and examples, see Expiring data with TTL example.


Expiring data with TTL example

Use the INSERT and UPDATE commands for setting the expiration time-to-live (TTL) for data in a column.

Setting the time-to-live (TTL) for value

Use the USING TTL N option with INSERT and UPDATE statements to automatically expire data in a column.

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2024 DataStax | Privacy policy | Terms of use

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com