单机 8 核 32G, 用什么技术才可以做单表 20 亿数据的过滤查询?

2022-01-14 11:24:14 +08:00
 cxh116
需求是抓取 eth 的 block 与 transaction 来分析, transaction 数据 10 亿以上了.
数据存在 pg 数据,大小在 2TB 以上.

目前是使用 postgresql + timescale, transaction 表的 hash 字段加了索引,1 小时返回不了根据 hash 单字段的过滤查询结果.

3 秒左右一个块,一个 block 里有 300 左右个 tx ,也就是每秒写入差不多在 100 条记录.

需要根据 transaction 的 hash , from addr, to addr 查询,简单的 key value.

期望简单查询能在 1 分钟左右出结果.

目前准备尝试的方案是使用 clickhouse 列数据库,但抓取数据的成本太高,且也需要开发,所以先请教一下大佬们,看有没有更好的方案.
4858 次点击
所在节点    问与答
43 条回复
encro
2022-03-05 20:06:38 +08:00
@outdoorlife

阿里云 RDS 上放了一个 1 核 2G 的 Mysql ,没在怎么优化,1.9 亿数据,每天几百个人用及万次查询,一个页面几个查询,打开速度几十到几百毫秒吧。

字段:
用户书籍编号( bigint ),章节编号(bigint),段落编号( bigint ),段落内容(text),状态(是否删除 tinyint ),创建时间(datetime),修改时间(datetime),用户编号(bigint),段落序号( smalint )。

平时查询都是查某一章未删除段落按序号从小到大排列,而且都是 select *。。。

主要影响时间的是某个章节段落超过 1000 以上以上的会返回比较慢,或者段落排序修改时会比较慢。

平时慢查询日志,超过 200ms 都会记录,一般只有上面两种情况会出现需要几百毫秒的满查询,其他都不会。
dw2693734d
2023-02-26 11:22:09 +08:00
楼主解决了没,我用的 Nvme 硬盘,5000M/s 读写,按需求存 transaction , 不是每笔 transaction 都存
cxh116
2023-02-26 15:57:27 +08:00
@dw2693734d 还是用 pg 的,根据 v 友的建议,优化的结果放在 append 新帖子链接里。走索引的话,感觉速度也还行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX