一个 10T 左右的 postgresql 数据库,怎么设计才能提升查询效率呢?如果硬件一定的情况下,目前单台服务器。 尝试过 elk,貌似速度是快了,就是查询,join 之类的有点麻烦。
1
Chenamy2017 2019-06-19 13:17:52 +08:00
持续关注...
|
2
opengps 2019-06-19 13:30:23 +08:00
挑战单机极限,这个话题值得关注
|
3
endershadow 2019-06-19 13:36:28 +08:00
设计没用 上 citus data
|
4
huiyifyj 2019-06-19 13:42:24 +08:00 via Android
我在想,这么大数据,应该都用分布式了吧🙃
|
5
996icu 2019-06-19 13:42:32 +08:00
10T 的数据不考虑换架构吗?
|
6
abelce 2019-06-19 13:58:25 +08:00 via iPhone
持续关注,目前依然是用 pgsql
|
7
sjmcefc2 OP |
8
Rwing 2019-06-19 14:05:22 +08:00
关注
|
9
luozic 2019-06-19 14:14:18 +08:00 1
推薦去看看阿里雲大佬 https://github.com/digoal/blog/blob/master/README.md 的 blog
|
10
sjmcefc2 OP Citus is an extension to Postgres that transforms Postgres into a distributed database.
Pex uses Citus to ingest 80B data points per day and analyze that data in real-time. They use a 20+ node cluster on Google Cloud. Agari uses Citus to secure more than 85 percent of U.S. consumer emails on two 6-8 TB clusters. 看起来 citus 好棒啊,有起是 agari 的案例,两个节点? |
11
flytrap 2019-06-19 14:21:31 +08:00
这是一个值得探讨的问题
|
12
endershadow 2019-06-19 14:28:50 +08:00
方案很多, 你这个数据量 pivotal 家的 green plum 更适合
|
14
sjmcefc2 OP @endershadow 能告知下理由吗?
|
15
karenn 2019-06-19 14:31:54 +08:00
楼主你也得说一下你的机器的配置吧
|
16
sjmcefc2 OP 机器也很弱机 DELL t630。
|
17
endershadow 2019-06-19 14:42:46 +08:00
@sjmcefc2 如果数据量就是这个规模的话, green plum 中文资料多,上手更容易.pivotal 国内也有研发中心
|
18
sjmcefc2 OP @endershadow 数据量基本是这个规模了,最多能再加一个节点。pivotal greenplum 貌似是个数据分析平台了?
需要购买?还是开源呢?导入数据可以 pgloader 之类工具不? |
19
est 2019-06-19 14:48:17 +08:00 1
不讲数据结构和查询需求就可以银弹优化?
|
20
sjmcefc2 OP @endershadow Pivotal Greenplum 基于 PostgreSQL 和 Greenplum 数据库,可让用户更好地控制所部署的软件,减少供应商锁定,产品方向也更加开放。看起来 pivotal greenplum 和 greenplum 是不同的。
|
21
endershadow 2019-06-19 15:06:01 +08:00
@sjmcefc2 都是开源的,greenplum 有自己的导入工具 gpload.其实两种方案都可以,代表两种不同的架构,一种是传统的 MPP 架构,一种是分布式架构.本质区别我也在学习中.
|
22
endershadow 2019-06-19 15:07:37 +08:00
@sjmcefc2 greenplum 本来是商用的分析型数据库,后来被 pivotal 收购开源了
|
23
mooncakejs 2019-06-19 15:25:40 +08:00
只要优化好查询条件,10T 也不算问题啊
|
24
sjmcefc2 OP @mooncakejs 只要。。。。您这个要求其实特别高。
@endershadow 感谢解答。看起来 citus 和 pivotal greenplum 好像都能够满足,citus 一直强调自己不是一个 fork,而 pivotal greenplum 应该是 fork 吧 |
25
passerbytiny 2019-06-19 15:53:51 +08:00
当初特意搜寻过 postgresql 能不能当大数据的物理存储,最后的结论是:虽然 postgresql 能支持超大文件,但它不支持分布式存储,所以不能作为大数据的物理存储。
|
26
maierhuang 2019-06-19 15:56:40 +08:00
100GB 的数据量,sql 写的烂的话照样反应慢。如果架构方面的优化,gp 会是个比较好的选择,mpp 架构会让你爽的不行,不过在表 join 方面会比较麻烦。如果继续用 postgresql 话,不知道能达到什么程度,还是要看的你 sql 是怎样的,不过多建几个备库,适当的读写分离能解决一些问题。
|
27
mooncakejs 2019-06-19 16:06:28 +08:00
@sjmcefc2 一般查询条件很复杂的,都是太追求一致性,不想存多份数据。
|
28
sjmcefc2 OP @maierhuang 应用中大量的 join,写动作很少,大量查询。主要应用就是查询、分析,看起来 gp 对口。
@passerbytiny 如果不支持分布式存储,citus 又是如何实现呢?或者效果为何如它说的那么好? @mooncakejs 主要是不少的 join 操作。 |
29
encro 2019-06-19 16:29:10 +08:00
还是要分析 sql 吧,
没有针对 sql 进行解析,都是扯淡, 该触发器就触发器, 减少 count,group by, file sort, 慢查询日志都没有,没有优化的前提, 阿里云 2000 一年的 MYSQL 数据库,放了数亿的数据,查询也是毫秒级啊。 |
30
maierhuang 2019-06-19 16:38:47 +08:00
gp 主打是 olap 场景,主打还是数据仓库的场景,主要是利用多台计算机的计算能力。citus 还是 oltp 的场景更多些,主打的还是 scale out 的功能。
|
31
cstj0505 2019-06-19 16:54:10 +08:00
10T,用 m2 组 raid 貌似 io 可解,剩下就是大内存,256,512 是必须的,然后多核。
|
32
rrfeng 2019-06-19 16:57:15 +08:00
不给数据结构只给数据量咋看,如果一个查询要 10T 全算一遍任谁也不行(
|
33
lbp0200 2019-06-19 16:58:53 +08:00
都 10T 了,应该上 Hive,或者花钱上 GoogleCloud 的 BigQuery、spanner
|
34
sjmcefc2 OP @maierhuang 非常感谢。gp 的网站貌似也是数据科学更多一些,citus 更像一个外挂?不知道理解的对不对
|
35
wanganjun 2019-06-19 17:50:08 +08:00
pg 版本是多少,先升级到 11,可以多核并行查询,并行排序,并行 join
|
37
endershadow 2019-06-19 18:06:07 +08:00
|
38
opengps 2019-06-19 18:09:43 +08:00
刚反应过来:目前的 10T 是通过多块硬盘组 Raid 实现的吧,所以硬盘 io 性能才够用
|
39
sjmcefc2 OP |
40
wanganjun 2019-06-19 20:06:28 +08:00
就看 9 楼提供的阿里云大佬的链接,里面有针对并行的简要总结,也有一些说明和实践
|
41
gaodeng2008 2019-12-14 07:21:20 +08:00 via Android
citus 几乎没有事务隔离,建议选择场景谨慎使用。。。
|