Timescale Cloud:性能、扩展、企业级
自托管产品
MST
随着时间的推移,您会积累大量数据。由于这些数据大多是不可变的,您可以对其进行压缩以节省空间并避免产生额外费用。
TimescaleDB 专为处理事件驱动型数据(如时序数据和快速分析查询)而构建,它支持 hypercore,并具有列式存储功能。
Hypercore 使您能够以更高效的格式存储数据,与普通 PostgreSQL 表相比,压缩率最高可达 90 倍。然而,这高度依赖于数据和配置。
Hypercore 原生实现在 PostgreSQL 中,不需要特殊的存储格式。当您将数据从行式存储转换为列式存储时,TimescaleDB 会使用 PostgreSQL 功能将数据转换为列式格式。使用列式格式可以实现更好的压缩率,因为相似的数据存储在相邻位置。有关列式格式的更多详细信息,请参阅 hypercore。
压缩数据的一个有益的副作用是,某些查询会显著加快,因为需要读入内存的数据更少。
要压缩 crypto_ticks
表中的数据,请执行以下操作
连接到您的 Timescale Cloud 服务
在 Timescale Console
中打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。您也可以使用 psql 连接到您的服务。
将数据转换为列式存储
您可以自动或手动执行此操作
现在您已将超表中的数据块转换为列式存储,请比较压缩前后数据集的大小
SELECTpg_size_pretty(before_compression_total_bytes) as before,pg_size_pretty(after_compression_total_bytes) as afterFROM hypertable_columnstore_stats('crypto_ticks');这表明数据使用量显著改善
before | after--------+-------694 MB | 75 MB(1 row)
以前,列式存储中的数据是按 block_id
列值分段的。这意味着通过该列进行筛选或分组来获取数据会更高效。排序设置为时间降序。这意味着当您运行尝试以相同方式排序数据的查询时,会看到性能优势。
连接到您的 Timescale Cloud 服务
在 Timescale Console
中打开一个 SQL 编辑器。控制台中的编辑器会显示查询速度。
运行以下查询
SELECTtime_bucket('1 day', time) AS bucket,symbol,FIRST(price, time) AS "open",MAX(price) AS high,MIN(price) AS low,LAST(price, time) AS "close",LAST(day_volume, time) AS day_volumeFROM crypto_ticksGROUP BY bucket, symbol;性能提升了两个数量级,列式存储压缩时约为 15 毫秒,行式存储解压时约为 1 秒。
关键词