我在timescaleDB中创建了一个块大小为1小时的超表drt
| random | time |
| ------ | -------------------------- |
| 4 | 2021-10-20 12:34:08.070423 |
| 5 | 2021-10-20 12:58:00.568898 |
和
SELECT show_chunks('drt')
在输出中有一个块但是当我运行
时SELECT show_chunks('drt', older_than => INTERVAL '2 hours')
没有输出。我不明白为什么。
select now() - interval '2 hours' ;
为
2021-10-20 14:28:35.105981+00
更新:我跑
select show_chunks('drt', older_than=>interval 'N hours');
多次,改变n的值。昨天我得到了N<=18的输出。但是今天,在设置了N<=11的值之后,我看到了相同的块。这个查询应该返回在N小时之前创建的所有块。N应该随时间增加。对吧?我遗漏了什么?请帮助。
您是否检查过这是否可能是时区问题?您可以直接在timescaledb_information.chunks
视图中检查块。
看看它返回给你多少块:
select * from timescaledb_information.chunks where hypertable_name = 'drt' and range_end < now() - INTERVAL '1 hour' ;
请注意,这里是15:37对我(GMT-3),但我的服务器在外面:
select now() - INTERVAL '1 hour';
┌───────────────────────────────┐
│ ?column? │
├───────────────────────────────┤
│ 2021-10-20 17:36:48.833827+00 │
└───────────────────────────────┘
您可以检查您拥有的数据类型:
select pg_typeof(now() - INTERVAL '1 hour');
┌──────────────────────────┐
│ pg_typeof │
├──────────────────────────┤
│ timestamp with time zone │
└──────────────────────────┘