求教 10T 的 postgresql 数据库应该怎么设计才能保证查询较快, 30s 级别?

2019-06-19 11:54:10 +08:00
 sjmcefc2

一个 10T 左右的 postgresql 数据库,怎么设计才能提升查询效率呢?如果硬件一定的情况下,目前单台服务器。 尝试过 elk,貌似速度是快了,就是查询,join 之类的有点麻烦。

7142 次点击
所在节点    PostgreSQL
41 条回复
endershadow
2019-06-19 15:06:01 +08:00
@sjmcefc2 都是开源的,greenplum 有自己的导入工具 gpload.其实两种方案都可以,代表两种不同的架构,一种是传统的 MPP 架构,一种是分布式架构.本质区别我也在学习中.
endershadow
2019-06-19 15:07:37 +08:00
@sjmcefc2 greenplum 本来是商用的分析型数据库,后来被 pivotal 收购开源了
mooncakejs
2019-06-19 15:25:40 +08:00
只要优化好查询条件,10T 也不算问题啊
sjmcefc2
2019-06-19 15:49:36 +08:00
@mooncakejs 只要。。。。您这个要求其实特别高。

@endershadow 感谢解答。看起来 citus 和 pivotal greenplum 好像都能够满足,citus 一直强调自己不是一个 fork,而 pivotal greenplum 应该是 fork 吧
passerbytiny
2019-06-19 15:53:51 +08:00
当初特意搜寻过 postgresql 能不能当大数据的物理存储,最后的结论是:虽然 postgresql 能支持超大文件,但它不支持分布式存储,所以不能作为大数据的物理存储。
maierhuang
2019-06-19 15:56:40 +08:00
100GB 的数据量,sql 写的烂的话照样反应慢。如果架构方面的优化,gp 会是个比较好的选择,mpp 架构会让你爽的不行,不过在表 join 方面会比较麻烦。如果继续用 postgresql 话,不知道能达到什么程度,还是要看的你 sql 是怎样的,不过多建几个备库,适当的读写分离能解决一些问题。
mooncakejs
2019-06-19 16:06:28 +08:00
@sjmcefc2 一般查询条件很复杂的,都是太追求一致性,不想存多份数据。
sjmcefc2
2019-06-19 16:21:04 +08:00
@maierhuang 应用中大量的 join,写动作很少,大量查询。主要应用就是查询、分析,看起来 gp 对口。

@passerbytiny 如果不支持分布式存储,citus 又是如何实现呢?或者效果为何如它说的那么好?

@mooncakejs 主要是不少的 join 操作。
encro
2019-06-19 16:29:10 +08:00
还是要分析 sql 吧,
没有针对 sql 进行解析,都是扯淡,
该触发器就触发器,
减少 count,group by, file sort,
慢查询日志都没有,没有优化的前提,
阿里云 2000 一年的 MYSQL 数据库,放了数亿的数据,查询也是毫秒级啊。
maierhuang
2019-06-19 16:38:47 +08:00
gp 主打是 olap 场景,主打还是数据仓库的场景,主要是利用多台计算机的计算能力。citus 还是 oltp 的场景更多些,主打的还是 scale out 的功能。
cstj0505
2019-06-19 16:54:10 +08:00
10T,用 m2 组 raid 貌似 io 可解,剩下就是大内存,256,512 是必须的,然后多核。
rrfeng
2019-06-19 16:57:15 +08:00
不给数据结构只给数据量咋看,如果一个查询要 10T 全算一遍任谁也不行(
lbp0200
2019-06-19 16:58:53 +08:00
都 10T 了,应该上 Hive,或者花钱上 GoogleCloud 的 BigQuery、spanner
sjmcefc2
2019-06-19 17:06:05 +08:00
@maierhuang 非常感谢。gp 的网站貌似也是数据科学更多一些,citus 更像一个外挂?不知道理解的对不对
wanganjun
2019-06-19 17:50:08 +08:00
pg 版本是多少,先升级到 11,可以多核并行查询,并行排序,并行 join
cstj0505
2019-06-19 17:52:08 +08:00
@lbp0200 hive 30s 不可能的吧,hive 查询都是分钟级别的
endershadow
2019-06-19 18:06:07 +08:00
opengps
2019-06-19 18:09:43 +08:00
刚反应过来:目前的 10T 是通过多块硬盘组 Raid 实现的吧,所以硬盘 io 性能才够用
sjmcefc2
2019-06-19 18:38:33 +08:00
@wanganjun 先试试这个升级,目前是 10. 现在 11 都有这特性了啊

@endershadow 最后苏宁选择了 citus?
wanganjun
2019-06-19 20:06:28 +08:00
就看 9 楼提供的阿里云大佬的链接,里面有针对并行的简要总结,也有一些说明和实践

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

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

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

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

© 2021 V2EX