- 硬件环境
- 虚拟机配置:
4台CentOS 7.5 虚拟机 内存 8G 存储 150G 单核
- Greenplum及postgresql版本
Grenplum 6.0.0 postgresql 9.1
- 节点配置
一个master(主节点),六个segment(子节点)
- 数据信息
使用程序生成2008年1月1日至2018年1月1日的10分钟数据,测试数据包括20个观测站点,每个观测点100个观测变量,10年共计1051200000条数据,大小约40G。数据分布如下:
- 集群查询测试
2.1 远程测试
在远程pgAdmin客户端测试greenplum 集群
2.1.1查询一个站点一年的数据,数据大小约200M,共5241500条数据:
测试语句:select * from tbl_value where fld_time > '2009-01-01' and fld_time < '2009-12-31' and fld_site_id =4;
用时:207536 ms
2.1.2查询一个站点一个月的数据,数据大小约16.5M,共431900条数据:
测试语句:select * from tbl_value where fld_time > '2009-01-01' and fld_time < '2009-01-31' and fld_site_id =4;
用时:17966 ms
2.1.3查询一个站点一天的数据,数据大小约0.55M,共14300条数据:
测试语句:select * from tbl_value where fld_time > '2009-01-01' and fld_time < '2009-01-02' and fld_site_id =4;
用时:1179 ms
2.1.3查询一条数据:
测试语句:select * from tbl_value where fld_time = '2009-01-01 00:00:00' and fld_site_id =4 and fld_variable_id = 1;
用时:742 ms
2.2 在greenplum的master节点测试
用上面同样的sql语句在master节点测试,结果如下:
2.2.1查询一个站点一年的数据,数据大小约200M,共5241500条数据:
用时:12286.864 ms
2.2.2查询一个站点一个月的数据,数据大小约16.5M,共431900条数据:
用时:1032.934 ms
2.2.3查询一个站点一天的数据,数据大小约0.55M,共14300条数据:
用时:797.956 ms
2.2.3查询一条数据:
用时:555.226 ms
2.3 已分库分表数据库测试
在数据库进行本地和远程查询测试,测试数据库为observation20122013,查询站点ID为385的2012-02-01到2013-02-01数据,测试情况如下:
2.3.1 查询一年数据,共计5737294 行:
本地用时:381372 ms 远程用时:392760 ms
2.3.2 查询一个月数据,共计1176128 行:
本地用时:59391 ms 远程用时:73853 ms
2.3.3 查询一天数据,共计51136 行:
本地用时:3541 ms 远程用时:4268 ms
2.3.4 查询一条数据:
本地用时:848 ms 远程用时:956 ms
- 结果统计
数据库 | 连接方式 | 一年数据 | 一月数据 | 一天数据 | 一条数据 |
Greenplum Cluster | 远程客户端 | 207536 ms | 17966 ms | 1179 ms | 742 ms |
Master本地 | 12286.864 ms | 1032.934 ms | 797.956 ms | 555.226 ms | |
数据库 (分库分表) | 远程客户端 | 392760 ms | 73853 ms | 4268 ms | 956 ms |
服务器本地 | 381372 ms | 59391 ms | 3541 ms | 848 ms |
- 单机测试
| 一年数据 | 一月数据 | 一天数据 | 一条数据 |
单机PGSQL (未分库分表) | 471028.008 ms | 433695.222 ms | 439707.892 ms | 391964.797 ms |
- 硬件说明
在查询过程中对master和segment的CPU使用情况进行监控,发现在使用select * from 语句时master的单核CPU占用比较大,使用率会达到92%,segment总的CPU使用率会达到70%。
(a)执行select*语句时segment的CPU使用情况
(b)执行select*语句时master的CPU使用情况
六、 结论
Greenplum集群在数据查询时优势明显,在本地查询一年数据时,查询效率约为已分库分表数据库的32倍,查询一个月数据效率约为已分库分表数据库的59倍,同时远程查询效率提升明显。实际情况下,数据体量越大,集群优势越明显,查询效率越高。
欢迎提出相关问题!