加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

数据库新秀 postgresql vs mongo 性能PK

发布时间:2020-12-11 23:56:40 所属栏目:MySql教程 来源:网络整理
导读:前几天看了一篇文章 发布在Percona Live Europe 2017 作者是 ,作者的观点是PostgreSQL更好,恰巧没有玩过postgresql,仅仅听说过。 码农的第一特征就是相信实验,故postgresql走起 上一篇文章 我们做了一个mongo的实验 >>插入1亿条记录,约耗时1个小时 >>无

前几天看了一篇文章 发布在Percona Live Europe 2017

作者是,作者的观点是PostgreSQL更好,恰巧没有玩过postgresql,仅仅听说过。

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

上一篇文章<> 我们做了一个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 依赖包

org.postgresql postgresql 42.2.5

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++<span>) {
            stmt.setInt(1,i+1<span>);
            stmt.setString(2,"mkyong"+<span>i);
            stmt.setInt(3,i%100<span>);
            stmt.setString(4,"address"+<span>i);
            stmt.setFloat(5,25000.00f<span>);
            stmt.executeUpdate();
        }

/ String sql = "CREATE TABLE PERSON " +
"(ID INT PRIMARY KEY NOT NULL," +
" 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<span> (ClassNotFoundException e) {
        e.printStackTrace();

    } catch<span> (SQLException e) {
        e.printStackTrace();
    }
}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>

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

? ?>>插入性能: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

小结:

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读