Timescale Cloud:性能、规模、企业级
自托管产品
MST
随着时间的推移,您会积累大量数据。由于这些数据大多是不可变的,您可以对其进行压缩以节省空间并避免产生额外费用。
TimescaleDB 专为处理事件导向型数据(如时序数据)和快速分析查询而构建,它支持 hypercore,并带有列式存储功能。
Hypercore 允许您以更高效的格式存储数据,与普通 PostgreSQL 表相比,压缩率最高可达 90 倍。然而,这在很大程度上取决于数据和配置。
Hypercore 是在 PostgreSQL 中原生实现的,不需要特殊的存储格式。当您将数据从行式存储转换为列式存储时,TimescaleDB 会使用 PostgreSQL 功能将数据转换为列式格式。使用列式格式可以实现更好的压缩比,因为相似的数据会相邻存储。有关列式格式的更多详细信息,请参阅 hypercore。
压缩数据的一个有益的副作用是,某些查询会显著加快,因为需要读入内存的数据量减少了。
要压缩 `transactions` 表中的数据,请执行以下操作
连接到您的 Timescale Cloud 服务
在 Timescale 控制台
中,打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。您也可以使用 psql 连接到您的服务。
将数据转换为列式存储
您可以自动或手动执行此操作
- CALL add_columnstore_policy('transactions', after => INTERVAL '1d');
在超表中手动将所有数据块转换为列式存储
CALL convert_to_columnstore(c) from show_chunks('transactions') c;
以前,列式存储中的数据是根据 `block_id` 列的值进行分段的。这意味着通过该列进行筛选或分组来获取数据会更高效。排序设置为时间降序。这意味着当您运行尝试以相同方式排序数据的查询时,会看到性能优势。
连接到您的 Timescale Cloud 服务
在 Timescale 控制台
中,打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。
运行以下查询
WITH recent_blocks AS (SELECT block_id FROM transactionsWHERE is_coinbase IS TRUEORDER BY time DESCLIMIT 5)SELECTt.block_id, count(*) AS transaction_count,SUM(weight) AS block_weight,SUM(output_total_usd) AS block_value_usdFROM transactions tINNER JOIN recent_blocks b ON b.block_id = t.block_idWHERE is_coinbase IS NOT TRUEGROUP BY t.block_id;性能提升达到两个数量级,列式存储压缩后约为 15 毫秒,行式存储解压缩后约为 1 秒。
关键词
此页面有问题?报告问题" width="16" height="16" class="inline m-0 ml-1"> 或 编辑此页面
在 GitHub 上。