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

自托管产品

MST

随着时间的推移,您会积累大量数据。由于这些数据大多是不可变的,您可以对其进行压缩以节省空间并避免产生额外费用。

TimescaleDB 专为处理事件导向型数据(如时序数据)和快速分析查询而构建,它支持 hypercore,并带有列式存储功能。

Hypercore 允许您以更高效的格式存储数据,与普通 PostgreSQL 表相比,压缩率最高可达 90 倍。然而,这在很大程度上取决于数据和配置。

Hypercore 是在 PostgreSQL 中原生实现的,不需要特殊的存储格式。当您将数据从行式存储转换为列式存储时,TimescaleDB 会使用 PostgreSQL 功能将数据转换为列式格式。使用列式格式可以实现更好的压缩比,因为相似的数据会相邻存储。有关列式格式的更多详细信息,请参阅 hypercore

压缩数据的一个有益的副作用是,某些查询会显著加快,因为需要读入内存的数据量减少了。

要压缩 `transactions` 表中的数据,请执行以下操作

  1. 连接到您的 Timescale Cloud 服务

    Timescale 控制台 中,打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。您也可以使用 psql 连接到您的服务。

  2. 将数据转换为列式存储

    您可以自动或手动执行此操作

以前,列式存储中的数据是根据 `block_id` 列的值进行分段的。这意味着通过该列进行筛选或分组来获取数据会更高效。排序设置为时间降序。这意味着当您运行尝试以相同方式排序数据的查询时,会看到性能优势。

  1. 连接到您的 Timescale Cloud 服务

    Timescale 控制台 中,打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。

  2. 运行以下查询

    WITH recent_blocks AS (
    SELECT block_id FROM transactions
    WHERE is_coinbase IS TRUE
    ORDER BY time DESC
    LIMIT 5
    )
    SELECT
    t.block_id, count(*) AS transaction_count,
    SUM(weight) AS block_weight,
    SUM(output_total_usd) AS block_value_usd
    FROM transactions t
    INNER JOIN recent_blocks b ON b.block_id = t.block_id
    WHERE is_coinbase IS NOT TRUE
    GROUP BY t.block_id;

    性能提升达到两个数量级,列式存储压缩后约为 15 毫秒,行式存储解压缩后约为 1 秒。

关键词