timescaledb - 时间尺度压缩表永远用于简单查询
问题描述
我有一个大约 4000 万行的超表。希望压缩它以减少我们的一些存储成本。在压缩之前,以下查询运行得非常快。
select * from trades where pair = 'xxxxxxxxx';
压缩后,此查询挂起很长时间(30-40+s)
查看查询计划,似乎它正在解压缩每个块,然后检查该对是否存在,如果不存在则移动到下一个块。虽然它应该检查该对是否存在,并且只有在存在时才解压缩该块。
我已经segementby
开始配对,所以我不完全确定我错过了什么。
CREATE TABLE trades (
"timestamp" timestamptz NOT NULL,
tx varchar(255) NOT NULL,
pair varchar(255) NOT NULL,
price float8 NOT NULL,
amount float8 NOT NULL
);
CREATE INDEX trades_pair_timestamp_idx ON public.trades USING btree (pair, "timestamp" DESC);
SELECT create_hypertable('trades', 'timestamp');
alter table trades set (
timescaledb.compress,
timescaledb.compress_segmentby = 'pair',
timescaledb.compress_orderby = 'timestamp');
SELECT add_compression_policy('trades', INTERVAL '1 week');
解决方案
您正在运行什么版本的 Timescaledb?解压前未过滤 varchar 字段存在一个 bug ,已在 2.3.1 中修复
推荐阅读
- reactjs - 警告:propType 失败:提供给 [ 'View' | 的 props.style 键 'color' 无效。'RCT 视图']
- java - 如何在不翻译屏蔽的特殊字符的情况下解组 xml 文件?
- python - Python,Pandas 计算复制行的平均值
- r - 在组合地图中定义颜色
- ruby-on-rails - 使用复选框和简单表单创建和更新
- typescript - 你如何创建一个打字稿装饰器,使装饰类扩展一个类
- wordpress - Html Tag wordpress rest api
- sql-server - 尝试在 SQL Server 中调用存储过程以将 XML 数据插入 Delta 表时出现“无法切换编码”警告
- android - 为什么从 AVD 创建的 Android 9 模拟器显示如下
- angular - 选项卡内的 Angular Material mat 选项卡和主第一个选项卡名称未更改