前几天看了一篇文章<High Performance JSON PostgreSQL vs. MongoDB> 发布在Percona Live Europe 2017

作者是<Dominic Dwyer Wei Shan Ang>,作者的观点是PostgreSQL更好,恰巧没有玩过postgresql,仅仅听说过。

码农的第一特征就是相信实验,故postgresql走起

上一篇文章<mongodb索引--1亿条记录的查询从55.7秒到毫秒级别> 我们做了一个mongo的实验

  >>插入1亿条记录,约耗时1个小时

  >>无索引查询一条记录耗时为55.7秒

  >>有索引查询一条记录耗时小于1秒

1.去官网下载psotgresql :https://www.postgresql.org/

下载最新版本11.1 windows安装,step by step

2.客户端,我选了pgadmin:https://www.pgadmin.org/

下载最新版本v3.6 windows安装,step by step

3.创建新的数据库www

4.创建新表

/*             String sql = "CREATE TABLE PERSON " +"(ID INT PRIMARY KEY     NOT NULL," +" NAME           TEXT    NOT NULL, " +" AGE            INT     NOT NULL, " +" ADDRESS        CHAR(50), " +" SALARY         REAL)";stmt.executeUpdate(sql);*/

5.插入1亿条记录

java client 依赖包

        <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.2.5</version></dependency>    

java程序

    public void postgresqlOneByOneInsert() {try {long start=System.currentTimeMillis();Class.forName("org.postgresql.Driver");Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/www", "postgres", "root");PreparedStatement   stmt = connection.prepareStatement("INSERT INTO PERSON(ID,NAME,AGE,ADDRESS,SALARY) values(?,?,?,?,?);"); for(int i=0;i<100000000;i++) { stmt.setInt(1, i+1); stmt.setString(2, "mkyong"+i); stmt.setInt(3, i%100); stmt.setString(4, "address"+i); stmt.setFloat(5, 25000.00f); stmt.executeUpdate(); } /* String sql = "CREATE TABLE PERSON " + "(ID INT PRIMARY KEY NOT NULL," + " NAME TEXT NOT NULL, " + " AGE INT NOT NULL, " + " ADDRESS CHAR(50), " + " SALARY REAL)"; stmt.executeUpdate(sql);*/ /* ResultSet rs = stmt.executeQuery( "SELECT * FROM STUDENT;" ); while ( rs.next() ) { int id = rs.getInt("sid"); String name = rs.getString("name"); System.out.println( "ID = " + id ); System.out.println( "NAME = " + name );; System.out.println(); } rs.close();*/ stmt.close(); connection.close(); System.out.println("耗时:"+(System.currentTimeMillis()-start)+" 毫秒"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }

然后是漫长的时间等待插入完成。

>>插入性能:1亿条记录导入时间耗时:36599195 毫秒~10个小时

 >>无索引时读取性能:SELECT * FROM PERSON where name='mkyong90000000';   9 secs 574 msec

>>有索引时读取性能:create index name_ind on PERSON(NAME); //创建索引耗时5 min 9 secs. SELECT * FROM PERSON where name='mkyong90000000'; //61ms

小结:

  1. 插入性能:mongo的效率为postgresql的10倍

  2. 读取性能:无索引时,postgresql是mongo的6倍左右

  3. 创建索引:postgrep要快,有索引查询不能确定查询时间差异

转载于:https://www.cnblogs.com/davidwang456/p/10193029.html

数据库新秀 postgresql vs mongo 性能PK相关推荐

  1. PostgreSQL数据库 OLTP高并发请求性能优化

    PostgreSQL数据库 OLTP高并发请求性能优化   2015-10-14 11:00:00|  作者:德哥:分类: PgSQL PerfTuning| 2015年度PG大象会报名地址: htt ...

  2. 《PostgreSQL 9.0性能调校》一一第1章 PostgreSQL版本

    第1章 PostgreSQL版本 PostgreSQL 9.0性能调校 众所周知,PostgreSQL具有丰富的功能集和非常稳定的软件版本.其默认的安全配置既被安全人员称赞又因其复杂的学习过程而被诟病 ...

  3. 开源的数据库,PostgreSQL 基础入门实战

    PostgreSQL 简介与安装 实验介绍 大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实.深入浅出.示例充足.覆盖重 ...

  4. postgis数据库优化_PostgreSQL批量导入性能优化

    现在很多企业都将数据库逐渐由Mysql转向了更加强大而且开源的PostgreSQL数据库.在数据迁移过程中,PostgreSQL数据库导入大量数据时候非常缓慢,本文我们就来说说PostgreSQL数据 ...

  5. redis nosql_NoSql数据库:Cassandra,Mongo,Redis数据库比较

    redis nosql 1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文 ...

  6. NoSql数据库:Cassandra,Mongo,Redis数据库比较

    1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,内 ...

  7. teradata查看正在运行的进程_一种基于greenplum数据库的状态检查及性能监控工具.doc...

    一种基于greenplum数据库的状态检查及性能监控工具 开发中心 导师责任制结业论文 题目:一种基于GreenPlum数据库的状态检查及性能监控工具 学员姓名: 导 师: 部 门: 非功能集成测试处 ...

  8. 【数据库】PostgreSQL简介

    是什么 PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行.它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird) ...

  9. 数据库:PostgreSQL 和 MySQL对比

    比较版本:PostgreSQL 11 VS MySQL5.7(innodb引擎) Oracle官方社区版版权情况:PostgreSQL 11(免费开源).MySQL5.7 Oracle官方社区版(免费 ...

最新文章

  1. scala编写排序算法
  2. 【转】android的消息处理机制(图+源码分析)——Looper,Handler,Message
  3. Globus toolkit3.0
  4. CString::Format
  5. Android 基础概念了解
  6. PyQt5笔记(08) – 输入对话框
  7. 启动不起来_电脑启动不起来该怎么办
  8. this.$http.post传参
  9. Maven-搭建普通maven项目
  10. maven 转 gradle
  11. java awt image_JAVA;使用java.awt.Image的不稳定性
  12. Scratch-Q版三国小人物角色素材分享,值得您的收藏!
  13. php怎么获取图片信息,PHP 获取图片信息exif
  14. 怎么修改Ubuntu和Windows双系统启动菜单项顺序?
  15. 微信浏览器跳转app解决方案
  16. java rsa x509_Java使用RSA加密解密签名及校验
  17. U盘格式化内存变小恢复设置
  18. pandas以文本形式读取Excel表数据写法
  19. PCB应用:Protel 99SE 向 AD16 应用转换的过程( 一 )
  20. W ndows7旗舰版RTM,Win7RTM版

热门文章

  1. 计算机专业2016高考录取分数线,中国科学院大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  2. java服务器错误怎么解决_如何解决java.lang.IllegalStateException:服务器处于错误状态异常...
  3. java 隐藏标题栏_两种方法一句代码隐藏Activity的标题栏
  4. java求导数_OO_JAVA_表达式求导
  5. pandas把频数统计转换成数据表
  6. python 实现判断一个列表中的一个或多个元素是否存在于一个字符串中。
  7. 互斥信号量的删除与状态查询
  8. scala语言的底层是java实现的_Scala学习笔记一(与Java、Jvm的关系以及程序执行流程分析)...
  9. Linux下qt桌面程序闪退,qt无法正常使用
  10. java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用