使用智能分层优化表成本
您可以使用 S3 Intelligent-Tiering 自动优化表的存储成本。S3 表类数据存储服务智能分层存储类别可在访问模式发生变化时,自动将数据移动到最经济实惠的访问层。当您使用 S3 Intelligent-Tiering 时,访问频率较低的数据会自动移至成本较低的层,当您再次访问时,这些数据会移回频繁访问层。
所有数据在各层之间移动时,不会产生检索费用、性能影响或可用性变化。此外,表维护操作(例如压缩)会根据访问模式进行优化,仅处理频繁访问层中有活跃访问的数据,同时降低成本较低层中较不频繁访问数据的维护成本。
S3 表类数据存储服务智能分层访问层
当表存储在 S3 Intelligent-Tiering 存储类别中时,Amazon S3 会持续监控访问模式并自动在访问层之间移动表数据。
分层操作发生在单个文件级别,因此根据访问模式,单个表中的文件可能会放在不同的层中。根据访问模式,表数据会自动移动到以下访问层之一:
-
频繁访问:所有文件的默认层。其他层中的文件在被访问时会自动移回频繁访问层。
-
不频繁访问:如果某个文件在连续 30 天内未被访问,就会移到不频繁访问层。
-
归档即时访问:如果某个文件在连续 90 天内未被访问,就会移到归档即时访问层。
所有层均提供毫秒延迟、高吞吐量性能,并且设计为具有 99.9% 的可用性和 99.999999999% 的持久性。
使用 S3 Intelligent-Tiering 的自动分层行为
以下操作构成了自动将文件从不频繁访问层或归档即时访问层移回频繁访问层的访问:
-
使用
GetObject、PutObject或CompleteMultipartUpload操作对表数据或元数据文件进行的任何读取或写入操作 -
使用 Iceberg REST API 操作的
LoadTable或UpdateTable操作 -
S3 表类数据存储服务复制操作
其他操作不构成自动将文件从不频繁访问层或归档即时访问层移回频繁访问层的访问。
注意
小于 128 KB 的文件不符合自动分层条件,仍会保留在频繁访问层中。通过压缩可以将这些文件合并成更少、更大的对象,然后将它们作为新快照提交回表中。如果新压缩的文件大于 128 KB 甚至更大,就符合对新文件自动分层的条件。
表维护行为
Amazon S3 自动执行的表维护操作(例如快照管理、未引用文件移除和记录过期)将继续在您的表上运行,不受分层的影响。压缩操作仅对频繁访问层中的文件运行,这样即可以优化频繁访问数据的性能,又可以降低成本较低层中数据的维护成本。
维护操作不会影响表中文件所处的访问层。维护操作执行的读取不会导致文件更改所处的层。不过,如果维护操作(例如压缩或记录过期)写入了新文件,则会在频繁访问层中创建该文件。
注意
由于压缩仅处理频繁访问层中的文件,因此在成本较低层的中,对数据执行删除操作所创建的删除文件不会被自动压缩。当与删除文件关联的数据文件被访问并移回频繁访问层时,这些删除文件就符合压缩的条件。对于不经常访问的表,您可以使用 Amazon EMR 手动执行压缩来压缩这些删除文件以及与其关联的数据文件。有关更多信息,请参阅使用压缩来维护表。您可以使用 Amazon CloudWatch 指标监控表中的文件增长情况,来确定什么时候进行手动压缩能够带来好处。
将 S3 Intelligent-Tiering 指定为存储类别
默认情况下,所有表都在 S3 Standard 存储类别中创建,无法移动到 S3 Intelligent-Tiering 中。要使用 S3 Intelligent-Tiering,您必须在创建表时指定它。您还可以将 S3 Intelligent-Tiering 设置为表存储桶的默认存储类别,这样就可以将在存储桶中创建的任何新表自动存储为 S3 Intelligent-Tiering 存储类别。
为表存储桶指定 S3 Intelligent-Tiering
在创建新表存储桶时,您可以通过在操作 CreateTableBucket 中使用 storage-class-configuration 标头,将 S3 Intelligent-Tiering 指定为默认存储类别。
要检查现有表存储桶的默认存储类别,请使用 GetTableBucketStorageClass 操作。要修改现有表存储桶的默认存储类别,请使用 PutTableBucketStorageClass 操作。
注意
当您修改表存储桶的默认存储类别时,该设置仅应用到在该存储桶中创建的新表。现有表的存储类别不会更改。
为表指定 S3 Intelligent-Tiering
在创建新表时,您可以通过在操作 CreateTable 中使用 storage-class-configuration 标头,将 S3 Intelligent-Tiering 指定为存储类别。
如果您在创建表时未指定存储类别,则将使用表存储桶上当时配置的默认存储类别来创建表。表在创建之后,无法修改其存储类别。
要检查现有表存储桶的默认存储类别,请使用 GetTableBucketStorageClass 操作。
监控存储使用情况
您可以在账户的 Amazon 成本和使用情况报告中,按访问层查看存储使用情况明细。有关更多信息,请参阅《Amazon Data Exports 用户指南》中的创建成本和使用情况报告。
您的账单报告中包含以下使用类型:
| 使用类型 | 单位 | 粒度 | 说明 |
|---|---|---|---|
|
GB-月 | 每天 | 在 S3 Intelligent-Tiering 存储中,存储在 S3 Intelligent-Tiering 频繁访问层中数据的 GB-月数 |
|
GB-月 | 每天 | 在 S3 Intelligent-Tiering 存储中,存储在 S3 Intelligent-Tiering 不频繁访问层中数据的 GB-月数 |
|
GB-月 | 每天 | 在 S3 Intelligent-Tiering 存储中,存储在 S3 Intelligent-Tiering 归档即时访问层中数据的 GB-月数 |
|
计数 | 每小时 | 对 S3 表类数据存储服务智能分层对象的 PUT、COPY 或 POST 请求的数量 |
|
计数 | 每小时 | 对 S3 表类数据存储服务智能分层对象的 GET 和所有其他非 Tier1 请求的数量 |