Timescale Cloud:性能、规模、企业版

自托管产品

MST

Timescale 的分层存储架构包括高性能存储层和低成本对象存储层。

您可以查询对象存储层中的数据,但无法修改。请确保您没有对需要主动修改的数据进行分层。

Timescale 仅对您的数据在 S3 中以 Apache Parquet 格式占用的存储空间收费,无论其在分层前是否在 Timescale Cloud 中进行了压缩。没有额外费用,例如数据传输或计算费用。

默认情况下,Timescale Cloud 将您的服务数据存储在标准高性能存储中。此存储层包括标准和增强两种类型。增强型存储仅在企业版定价方案下可用。

此存储类型提供高达 16 TB 的存储空间,并在所有定价方案下可用。您可以在 Timescale 控制台中更改 IOPS 值,以更好地满足您的需求。

  1. Timescale 控制台中,选择您的服务,然后点击 Operations > Compute and storage

    默认情况下,高性能存储类型设置为 Standard

  2. I/O boost 下拉菜单中选择 IOPS 值。

    Default standard storage in Timescale Cloud

  3. 点击 Apply

Timescale Cloud:企业版

自托管产品

MST

此存储类型提供高达 64 TB 和 32,000 IOPS,并在企业版定价方案下可用。要获取增强型存储

  1. Timescale 控制台中,选择您的服务,然后点击 Operations > Compute and storage

  2. Storage type 下拉菜单中选择 Enhanced

    Enhanced storage in Timescale Cloud

    注意

    增强型存储目前在 sa-east-1 区域不可用。

  3. I/O boost 下拉菜单中选择 IOPS 值。

    选择 8,000、16,000、24,000 和 32,000 IOPS 之间的一个值。您可以应用的值取决于您服务中的 CPU 数量。如果所选 IOPS 需要增加 CPU 数量,Timescale 控制台会通知您。要将 IOPS 增加到 64,000,请点击 Contact us,我们将与您联系以确认详细信息。

    I/O boost in Timescale Cloud

  4. 点击 Apply

您可以通过相同的方式从增强型存储切换到标准存储。如果您使用的增强型存储超过 16 TB,则在将数据缩小到 16 TB 以下之前,无法切换回标准存储。您可以更改存储类型和 I/O boost 设置,而无需停机。请至少等待 6 小时再尝试进行另一次更改。

Timescale Cloud:企业版、规模版

自托管产品

MST

您可以在 Timescale 控制台中启用低成本对象存储层,然后通过策略或手动方式对数据进行分层。

您可以从 Timescale 控制台的 Overview 选项卡中启用分层存储。

  1. Timescale 控制台中,选择要修改的服务。

  2. Explorer 中,点击 Storage configuration > Tiering storage,然后点击 Enable tiered storage

    Enable tiered storage

    启用后,您可以手动分层数据设置分层策略。启用分层存储后,您会看到分层对象存储中的数据量。

注意

数据分层仅在规模版和企业版定价方案中可用。

分层策略会自动将仅包含早于 move_after 阈值的数据块移动到对象存储层。这与数据保留策略类似,但数据块是被移动而非删除。

分层策略会调度一个定期运行的作业,以异步方式将符合条件的数据块迁移到对象存储。数据块一旦出现在 timescaledb_osm.tiered_chunks 视图中,就被视为已分层。

您可以将分层策略添加到超表,包括连续聚合。要管理分层策略,请连接到您的服务并在数据模式、SQL 编辑器或使用 psql 运行以下查询。

要添加分层策略,请调用 add_tiering_policy

SELECT add_tiering_policy(hypertable REGCLASS, move_after INTERVAL, if_not_exists BOOL = false);

例如,将 example 超表中超过三天的数据块分层。

SELECT add_tiering_policy('example', INTERVAL '3 days');

默认情况下,分层策略在您的数据库上每小时运行一次。要更改此间隔,请调用 alter_job

要移除现有分层策略,请调用 remove_tiering_policy

SELECT remove_tiering_policy(hypertable REGCLASS, if_exists BOOL = false);

例如,从 example 超表中移除分层策略。

SELECT remove_tiering_policy('example');

如果您移除分层策略,剩余的计划数据块将不会被分层。然而,已分层存储中的数据块不会被取消分层。您需要手动将数据块取消分层到本地存储。

如果分层策略无法满足您的当前需求,您可以手动分层和取消分层数据块。为此,请连接到您的服务并在数据模式、SQL 编辑器或使用 psql 运行以下查询。

对数据块进行分层是一个异步过程,它会调度数据块进行分层。在以下示例中,您将 example 超表中超过三天的数据块进行分层。然后,您会列出已分层的数据块。

  1. 选择 example 中所有超过三天的数据块。

    SELECT show_chunks('example', older_than => INTERVAL '3 days');

    这将返回数据块列表。请记下数据块名称。

    _timescaledb_internal._hyper_1_1_chunk
    _timescaledb_internal._hyper_1_2_chunk
  2. 调用 tier_chunk 手动分层每个数据块。

    SELECT tier_chunk('_timescaledb_internal._hyper_1_1_chunk');
  3. 对所有要分层的数据块重复此操作。

    对数据块进行分层会将其调度迁移到对象存储层,但迁移不会立即发生。数据块会一次一个地进行分层,以最大程度地减少数据库资源消耗。数据块仅在其被持久存储在对象存储层后才会被标记为已迁移并从标准存储中删除。您可以在迁移期间继续查询数据块。

  4. 要查看哪些数据块已分层到对象存储层,请使用 tiered_chunks 信息视图。

    SELECT * FROM timescaledb_osm.tiered_chunks;

要查看哪些数据块已通过策略或手动调用计划进行分层但尚未分层,请使用此视图。

SELECT * FROM timescaledb_osm.chunks_queued_for_tiering ;

要更新已分层的数据块中的数据,请将其移回 Timescale Cloud 中的标准高性能存储层。取消数据块分层是一个同步过程。数据取消分层时,数据块会重命名。

要取消数据块分层,请调用 untier_chunk 存储过程。

  1. 检查当前哪些数据块已分层。

    SELECT * FROM timescaledb_osm.tiered_chunks ;

    示例输出

    hypertable_schema | hypertable_name | chunk_name | range_start | range_end
    -------------------+-----------------+------------------+------------------------+------------------------
    public | sample | _hyper_1_1_chunk | 2023-02-16 00:00:00+00 | 2023-02-23 00:00:00+00
    (1 row)
  2. 调用 untier_chunk:

    CALL untier_chunk('_hyper_1_1_chunk');
  3. 使用 timescaledb_information.chunks 查看数据块的详细信息。:

    SELECT * FROM timescaledb_information.chunks;

    示例输出

    -[ RECORD 1 ]----------+-------------------------
    hypertable_schema | public
    hypertable_name | sample
    chunk_schema | _timescaledb_internal
    chunk_name | _hyper_1_4_chunk
    primary_dimension | ts
    primary_dimension_type | timestamp with time zone
    range_start | 2023-02-16 00:00:00+00
    range_end | 2020-03-23 00:00:00+00
    range_start_integer |
    range_end_integer |
    is_compressed | f
    chunk_tablespace |
    data_nodes |

如果您不再希望对特定超表使用分层存储,请通过调用 disable_tiering 来删除相关的元数据。

  1. 要删除与表关联的所有分层策略,请调用 remove_tiering_policy.

  2. 确保没有与此超表关联的分层数据。:

    1. 列出与此超表关联的已分层数据块。

      select * from timescaledb_osm.tiered_chunks
    2. 如果您有任何已分层的数据块,请取消此数据的分层,或从分层存储中删除这些数据块。

  3. 使用 disable_tiering 删除超表所有分层相关的元数据。:

    select disable_tiering('my_hypertable_name');
  4. 通过列出已启用分层的超表来验证分层是否已禁用。:

    select * from timescaledb_osm.tiered_hypertables;

关键词

在此页面上发现问题?报告问题或在 GitHub 上编辑此页面