为什么PostgreSQL比MongoDB还快
发布网友
发布时间:2022-04-24 19:39
我来回答
共1个回答
热心网友
时间:2022-05-01 09:57
测试数据总结如下(并根据服务端进程CPU的消耗量进行性能对比):
PostgreSQL
MongoDB
PK结果
测试数据
服务端进程
CPU利用率
服务端进程
CPU占用时间
测试数据
服务端进程
CPU利用率
服务端进程
CPU占用时间
Data Load(s)
10
93.40%
9.34
10.22
49.50%
5.06
MongoDB胜出(*1)
Insert(s)
20.77
74.50%
15.47
-
-
-
不具可比性
每SQL事务Insert(s)
43.64
52.90%
23.09
87.591
22.60%
19.80
MongoDB胜出
全表扫描Select(s)
0.784
-
-
-
-
-
不具可比性
Select(s)
0.326
-
-
3.62
0.70%
0.03
不具可比性
0匹配Select(s)
0.015
-
-
0.06
-
-
PostgreSQL胜出
0匹配全表扫描Select(s)
0.594
-
-
0.24
-
-
不具可比性
Size(MB)
142
-
-
409
-
-
PostgreSQL胜出
索引Size(MB)
49
-
-
9(*2)
-
-
不具可比性
*1)考虑到数据加载经常是单线程操作,不能完全无视mongoimport的瓶颈,这一局应该算是平手。
*2)3个索引的总Size(MB)
这个结果和EnterpriseDB的测试结果有很大出入。
1)数据加载
从服务端资源消耗的角度看,是MongoDB的性能是PostgreSQL的2倍。但是如果数据加载不能很好的并发展开,让mongoimport成为了瓶颈,那应该算打平。
另外,EnterpriseDB的数据加载的测试结果和我的结果差异比较大,可能是因为EnterpriseDB的测试中,数据量超过了系统内存量,IO对测试结果的影响开始显现。
2)数据插入
从服务端资源消耗的角度看,两者其实相差不大。EnterpriseDB的测试结果被mongo客户端的性能瓶颈绑架了。
3)数据查询
对无匹配数据(或少量匹配数据)的索引查询,PostgreSQL的性能是MongoDB的4倍(这一点也有点令人不解,同样是走索引的单点查询,为什么差距就这么大呢?)。
虽然EnterpriseDB的测试结果也表明PostgreSQL的性能是MongoDB 4倍左右,但EnterpriseDB的测试方法是有问题的。
4)数据大小
MongoDB的数据大小大约是PostgreSQL的3倍,这和EnterpriseDB的测试结果是一致的。
PostgreSQL在NoSQL方面的表现确实抢眼。PostgreSQL不仅是SQL+NoSQL+ACID的完美组合,性能还比MongoDB技高一筹(分布式集群上MongoDB更有优势)。