小编Gre*_*reg的帖子

管理和加速对超过 3 万亿行的 PostgreSQL 表的查询

我有超过 10 年的时间序列数据,有超过 3 万亿行和 10 列。

目前我使用具有 128GB RAM 的 PCIe SSD,我发现查询需要大量时间。例如,运行以下命令需要超过 15 分钟:

SELECT * FROM tbl WHERE column_a = 'value1' AND column_b = 'value2';
Run Code Online (Sandbox Code Playgroud)

该表主要用于读取。写入表的唯一时间是在每周更新期间插入大约 1500 万行。

管理如此大的表的最佳方法是什么?您会建议按年份拆分吗?

表大小为 542 GB,外部大小为 109 GB。

EXPLAIN (BUFFERS, ANALYZE) 输出:

"Seq Scan on table  (cost=0.00..116820941.44 rows=758 width=92) (actual time=0.011..1100643.844 rows=667 loops=1)"
"  Filter: (("COLUMN_A" = 'Value1'::text) AND ("COLUMN_B" = 'Value2'::text))"
"  Rows Removed by Filter: 4121893840"
"  Buffers: shared hit=2 read=56640470 dirtied=476248 written=476216"
"Total runtime: 1100643.967 ms"
Run Code Online (Sandbox Code Playgroud)

该表是使用以下代码创建的:

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

postgresql index database-design database-recommendation partitioning

7
推荐指数
1
解决办法
2102
查看次数

为什么事件溯源 (CQRS) 数据库不流行?

数据库存储事件并显示这些事件的最终结果的想法对现实世界(以及实际发生的事情)来说是现实的。

鉴于事件溯源数据库提供的灵活性(例如,在不同时间点查看数据库),为什么此类数据库不流行?

例如,我所知道的唯一两个进行事件溯源的数据库是 Datomic 和 Event Store。

database-design

7
推荐指数
1
解决办法
3763
查看次数