我尝试在 timescaleDb 1.0.0 中使用自适应分块。但它没有按预期工作。
- 我正在使用
chunk_target_size => 'estimate'
. - 当我检查 chunk_target_size 时,它约为 1.2 亿——这似乎是合理的
- 现在我开始一个测试程序,它将循环 5k 次并在每个事务中插入 1k 行(所以总共只有 500 万行)
- 然后当我检查块大小时,我看到大约 3.5k 块只有 152kB(第一个是 88B)!
我错过了什么?
SQL 语句
1-创建超表
SELECT create_hypertable('mytable', 'time', chunk_target_size => 'estimate';
2-检查 chunk_target_size
select table_name, chunk_target_size from _timescaledb_catalog.hypertable;
3-检查块大小
SELECT distinct total_size FROM chunk_relation_size_pretty('mytable');
附加信息
固定块大小:
当我将 chunk_target_size 设置为 100MB 时,chunk_target_size 将约为 1.04 亿。但是在插入数据后最大。chunk_relation_size 也只有 152kB
块时间间隔
当我设置 chunk_time_interval 而不是 chunk_target_size 时,我会得到更大的 chunk_relation_sizes。
更新 (2.11.2018)
我使用PGTune来改进数据库配置。以前只有 128MB -现在shared_buffers
是 1280MB。
随着这个变化,chunk_target_size
已经增加到大约 12 亿,但生成的块仍然只有 152kB。