PostgresQL一秒能插入多少条记录,MongoDB呢?读取的情况又如何?我写了一些简单的程序,得出了一些简单的数据,贴在这里分享,继续往下阅读前请注意下本文标题中的“无责任”,这表示此测试结果不代表真实的生产环境下的情况,只能说给大家一个比较直观的概念,可用于设计架构时候的估算。(量级上来说应该基本上是正确的)

本次测试选择的服务器环境为:

  • VMWare虚拟机(双核,4G内存)
  • CentOS 7
  • MongoDB 3.2
  • PostgresQL 9.4
  • 客户端均为Java版
  • 单线程客户端

插入数据比较简单,PostgresQL中创建这么一张表:

CREATE TABLE realtime(
id BIGINT PRIMARY KEY,
longtitude DOUBLE PRECISION,
latitude DOUBLE PRECISION,
velocity DOUBLE PRECISION,
soc DOUBLE PRECISION
);

对应地,MongoDB中的Document大致如此:

{
"_id" : NumberLong(1458587322),
"longitude" : 0.5812149460333115,
"latitude" : 0.23716701482457414,
"velocity" : 0.9920389498763238,
"soc" : 0.6602090307636349
}

数据随机生成,只有id为索引。

插入100万条数据

  • MongoDB(带ACK)——约300秒(约3300条/秒)
  • MongoDB(无ACK)——约35秒(月28000条/秒)
  • PostgresQL——约670秒(约1500条/秒)

不带ACK的MongoDB的速度大约是PostgresQL的20倍,写入条目数可轻松破万。

随机查询(无索引,600万条数据)

  • MongoDB——约2秒
  • PostgresQL——约0.5秒

这次PostgresQL占优,速度大约是MongoDB的4倍。

顺序读取一万条数据

  • MongoDB——约0.1秒
  • PostgresQL——约0.5秒

这次MongoDB占优,速度大约是PostgresQL的5倍。

也许你说MongoDB和PostgresQL是两种不同截然的数据库系统啊,干嘛放一起比?我当然知道,所以才拿出来比,(呵呵)比较后才知道什么情况下用什么样的数据库,怎么样才能将其能力发挥到最好嘛,对不对?于是有了下面这些“无责任”的结论(或者说小小建议了):

  • PostgresQL功能强大通用性好可靠性高适用面广(嗯?我的测试并未反映出这点啊?请执行忽略掉这些细节)
  • MongoDB适合于逻辑简单,存储量大,性能要求高,而可靠性要求相对不高的场合
  • 存储量巨大的情况下,MongoDB的查询必须得依赖索引
  • MongoDB的索引越少性能越好,磁盘空间消耗越少(索引能不要就不要),和前一点做一些自我平衡吧

实际的情况会有哪些不同?实际中性能肯定是要比这个高的,我这次只是用了一台本地的虚拟机用单线程访问尝试了一下,真实环境下的话肯定是高配置的服务器主机加多线程。一般来说关系型数据库(PostgresQL这种)在单台主机上的表现确实存在一个性能瓶颈,每秒写入万条对关系型数据库来说就很吃力,如果遇到了这个瓶颈,就可以考虑调整系统架构,使用NoSQL(MongoDB这种)分摊一些数据存储了,当然了,逻辑复杂,事务性要求高的数据还是得用PostgresQL,MongoDB则用于存那些“又大又傻”的数据。

MongoDB与PostgresQL无责任初步测试的更多相关文章

  1. 无责任共享 Coursera、Udacity 等课程视频

    本文转载自网络,原作者不详. (本文是用 markdown 写的,访问 https://www.zybuluo.com/illuz/note/71868 获得更佳体验) 程序语言 interactiv ...

  2. 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证

    <編者按>本篇为系列文章,带领读者轻松进入Windows Azure SDK .NET开发平台.本文为第二篇,将教导读者使用Azure AD进行身分验证.也推荐读者阅读无责任Windows ...

  3. Emotiv脑电设备与RDS机器人仿真初步测试

    Emotiv脑电设备与RDS机器人仿真初步测试 在脑电设备相关算法进行真实机器人测试前,有必要进行大量仿真验证算法,节约开发时间. 这里给我启发的Emotiv使用所参考的一些网址. 官网:https: ...

  4. The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS

    转载一片mongodb 迁移pg 数据库的文章 原文:https://www.infoq.com/news/2019/01/guardian-mongodb-postgresql The Guardi ...

  5. NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用

    业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...

  6. 串口之完整封装包含发送和接收(windows+ubuntu已通过初步测试)(持续更新)

    这里下载源码 更新日志 16-08-2021 V1.0.3 1.修复接收数据没有将数据传递给应用层的bug 2.windows版本:设置接收数据相邻字节间间隔为5ms 24-09-2020 V1.0. ...

  7. Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试

    本文章仅限cnblogs网站内转载!请某网站自觉,遵纪守法,尊重原创! 系统环境情况: 最小化.无桌面环境 新安装的Debian 8 Server 版本操作系统虚拟机一台 手动编译安装MongoDB ...

  8. mongodb 3.x WiredTiger存储优化测试

    http://pan.baidu.com/s/1sk8zekX 总结:1.使用WiredTiger引擎压缩比例约是MMAP引擎的12倍,2.从时间上看,此次测试100个线程并发,mongodb 3.2 ...

  9. MySQL Cluster初步测试结果汇总图示报告 --> 用mysqlslap与sysbench进行测试

    Cluster结构图                                       测试环境简介 Mysql cluster集群测试环境 4 data node,32G 8核cpu 4 ...

随机推荐

  1. 【.net 深呼吸】细说CodeDom(4):类型定义

    上一篇文章中说了命名空间,你猜猜接下来该说啥.是了,命名空间下面就是类型,知道了如何生成命名空间的定义代码,之后就该学会如何声明类型了. CLR的类型通常有这么几种:类.接口.结构.枚举.委托.是这么 ...

  2. setAttribute()

    ●节点分为不同的类型:元素节点.属性节点和文本节点等.   ●getElementById()方法将返回一个对象,该对象对应着文档里的一个特定的元素节点.   ●getElementsByTagNam ...

  3. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...

  4. Javascript实用方法二

    承接上一篇, Object keys object的keys方法能够获取一个给定对象的所有键(key/属性名)并以数组的形式返回.这个方法可以用于键的筛选.匹配等. var basket = { st ...

  5. UE4新手引导之下载和安装虚幻4游戏引擎

    1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...

  6. 云瓣影音网站&&微信端(已开源)

    随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...

  7. React Native 之 Text的使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  8. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. SQL 提示介绍 hash/merge/concat union

    查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...

  10. centos7 安装时候检测不到空余硬盘的解决办法

    我是用U盘装的centos,在进行硬盘规划时,看到硬盘的可用空间太少 这是因为我的硬盘以前装的是windows系统,硬盘几乎都已经被windows 操作系统给使用了,剩余空间也只会是windows用剩 ...