

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用默认生存时间（TTL）设置创建新表
<a name="TTL-how-to-create-table"></a>

在 Amazon Keyspaces 中，您可以在创建表时为表中的所有行设置默认 TTL 值。

表的默认 TTL 值为零，表示数据不会自动过期。如果表的默认 TTL 值大于零，则会为每行添加一个过期时间戳。

TTL 值以秒为单位设置，最大可配置值为 630,720,000 秒，相当于 20 年。

创建表后，可以使用 CQL DML 语句针对特定行或列覆盖表的默认 TTL 设置。有关更多信息，请参阅[使用 `INSERT` 语句为新行设置自定义生存时间（TTL）值](TTL-how-to-insert-cql.md)和[使用 `UPDATE` 语句可编辑行和列的自定义生存时间（TTL）设置](TTL-how-to-update-cql.md)。

当您在表上启用 TTL 时，Amazon Keyspaces 会开始为每行存储其他与 TTL 相关的元数据。此外，TTL 使用过期时间戳来跟踪行或列的过期时间。时间戳存储为行的元数据，并占该行的存储成本。

 TTL 功能启用后，无法为表禁用它。将表的 `default_time_to_live` 设置为 0 会禁用新数据的默认过期时间，但不会停用 TTL 功能，也不会将表恢复到原来的 Amazon Keyspaces 存储元数据或写入行为。

以下示例说明了如何创建带有默认 TTL 值的新表。

------
#### [ Console ]

**通过控制台使用生存时间默认值创建新表。**

1. [登录并在家中打开 Amazon Keyspaces 控制台。 AWS 管理控制台 https://console.aws.amazon.com/keyspaces/](https://console.aws.amazon.com/keyspaces/home)

1. 在导航窗格中，选择**表**，然后选择**创建表**。

1. 在**创建表**页面的**表详细信息**部分中，选择一个键空间并为新表提供一个名称。

1. 在**架构**部分，为您的表创建架构。

1. 在**表设置**部分，选择**自定义设置**。

1. 继续设置**生存时间 (TTL)**。

   在此步骤中，您为表选择默认 TTL 设置。

   对于**默认 TTL 周期**，输入到期时间并选择您输入的时间单位，例如秒、天或年。Amazon Keyspaces 将在几秒钟内存储值。

1. 选择**创建表**。系统将使用使用指定的默认 TTL 值创建您的表。

------
#### [ Cassandra Query Language (CQL) ]

**通过 CQL 使用默认 TTL 值创建新表**

1. 以下语句创建一个新表，默认 TTL 值设置为 3,024,000 秒（代表 35 天）。

   ```
   CREATE TABLE my_table (
                   userid uuid,
                   time timeuuid,
                   subject text,
                   body text,
                   user inet,
                   PRIMARY KEY (userid, time)
                   ) WITH default_time_to_live = 3024000;
   ```

1. 要确认新表的 TTL 设置，请使用 `cqlsh` `DESCRIBE` 语句，如以下示例所示。输出将该表的默认 TTL 设置显示为 `default_time_to_live`。

   ```
   DESC TABLE my_table;
   ```

   ```
   CREATE TABLE my_keyspace.my_table (
       userid uuid,
       time timeuuid,
       body text,
       subject text,
       user inet,
       PRIMARY KEY (userid, time)
   ) WITH CLUSTERING ORDER BY (time ASC)
       AND bloom_filter_fp_chance = 0.01
       AND caching = {'class': 'com.amazonaws.cassandra.DefaultCaching'}
       AND comment = ''
       AND compaction = {'class': 'com.amazonaws.cassandra.DefaultCompaction'}
       AND compression = {'class': 'com.amazonaws.cassandra.DefaultCompression'}
       AND crc_check_chance = 1.0
       AND dclocal_read_repair_chance = 0.0
       AND default_time_to_live = 3024000
       AND gc_grace_seconds = 7776000
       AND max_index_interval = 2048
       AND memtable_flush_period_in_ms = 3600000
       AND min_index_interval = 128
       AND read_repair_chance = 0.0
       AND speculative_retry = '99PERCENTILE';
   ```

------
#### [ CLI ]

**使用默认 TTL 值创建新表 AWS CLI**

1. 您可以使用以下命令创建新表，默认 TTL 值设置为 1 年。

   ```
   aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' \
               --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' \
               --default-time-to-live '31536000'
   ```

1. 要确认表的 TTL 状态，您可以使用以下命令。

   ```
   aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

   命令的输出如以下示例所示

   ```
   {
       "keyspaceName": "myKeyspace",
       "tableName": "myTable",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable",
       "creationTimestamp": "2024-09-02T10:52:22.190000+00:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2024-09-02T10:52:22.190000+00:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "DISABLED"
       },
       "ttl": {
           "status": "ENABLED"
       },
       "defaultTimeToLive": 31536000,
       "comment": {
           "message": ""
       },
       "replicaSpecifications": []
   }
   ```

------