前几天看了一篇文章<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要快,有索引查询不能确定查询时间差异

数据库新秀 postgresql vs mongo 性能PK的更多相关文章

  1. [转帖]PostgreSQL 参数调整(性能优化)

    PostgreSQL 参数调整(性能优化) https://www.cnblogs.com/VicLiu/p/11854730.html 知道一个 shared_pool 文章写的挺好的 还没仔细看 ...

  2. java 使用jdbc连接Greenplum数据库和Postgresql数据库

    1.公司使用的Greenplum和Postgresql,确实让我学到不少东西.简单将使用jdbc连接Greenplum和Postgresql数据库.由于使用maven仓库,不能下载Greenplum的 ...

  3. 通过数据库评估存储设备IO性能-Oracle11gIO校准功能介绍

    通过数据库评估存储设备IO性能 ---------Oracle11g IO校准功能介绍 前言 I/O子系统是ORACLE数据库的一个重要组成部分,因为I/O操作是贯穿数据库管理全过程,它操作的对象包括 ...

  4. Oracle数据库使用Analyze提升sql性能

    Oracle数据库使用Analyze提升sql性能 如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会.假设你创建了一张拥有100万条记录的临 ...

  5. CPU性能PK

    CPU性能PK AMD vs Intel 2020: Who Makes the Best CPUs? 英文原文链接:https://www.tomshardware.com/features/amd ...

  6. 比较3个开源数据库:PostgreSQL,MariaDB和SQLite

    在现代企业技术世界里,开源软件已牢固地确立了自己作为不可忽视的,最大力量之一的地位.由于开源运动的出现,推动了几十年来的一些最著名的技术发展. 不难理解为什么:尽管基于Linux的开源网络标准可能不像 ...

  7. 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化.数据表结构的优化.系统配置的优化和硬件的优化四个方面,如下图所示: SQL语句及索引的优化 SQL语句的优化 SQL语 ...

  8. PostgreSQL 参数调整(性能优化)

    昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利.但是在无外网环境下就是两个不同的概念了,可谓十有八折.感兴趣的同学可以搭建一下. PostgreSQL安装完成后第一件 ...

  9. 什么是云数据库RDS PostgreSQL 版

    PostgreSQL被业界誉为“最先进的开源数据库”,面向企业复杂SQL处理的OLTP在线事务处理场景,支持NoSQL数据类型(JSON/XML/hstore).支持GIS地理信息处理. 优点 NoS ...

随机推荐

  1. Linux下所有命令失效的解决方法

    今天在设置环境变量时,一不小心,设置错了,系统中的所有命令全部失效了,可把我急坏了,下面用一条命令可解决: 解决办法:重新设置环境变量PATH export PATH=/usr/sbin:/usr/b ...

  2. PyCharm 安装package matplotlib为例

    File --> settings --> Project Interpreter --> 搜索 matplotlib 如果觉得官网下载的速度慢,可以添加阿里云的 repositor ...

  3. Alpha 冲刺 (9/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...

  4. GBDT(MART) 迭代决策树详解

    在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Re ...

  5. 从中央仓库下载所想要的jar包

    中央仓库地址:https://mvnrepository.com/ 这边我搜索一个commons-logging包作为例子: 点击下面第二个绿色的comons-logging进入这个页面: 一.win ...

  6. springBoot基础

    开始之前最基础的东东here 官网:http://projects.spring.io/spring-boot/ 基础快速构建:http://start.spring.io/ 松哥的博客:http:/ ...

  7. android 动画学习

    android动画基础简介及使用方法:http://www.cnblogs.com/ldq2016/p/5407061.html

  8. noip第16课资料

  9. Celery分布式任务队列快速入门

    本节内容 1. Celery介绍和基本使用 2. 项目中使用Celery 3. Celery定时任务 4. Celery与Django结合 5. Django中使用计划任务 一  Celery介绍和基 ...

  10. Latex 模版生成会议论文 不显示Keywords,而是显示 Index Terms- ,改成Keywords 方法

    一. 不管显示何种内容,TEX 文件都是 \begin{IEEEKeywords} 关键词1.关键词2,..... \end{IEEEKeywords} 其中:模版文件 IEEETran.cls存在下 ...