数据库新秀 postgresql vs mongo 性能PK

数据库新秀 postgresql vs mongo 性能PK,第1张

概述前几天看了一篇文章<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 step2.客户端,我选了pgadmin:https://www.pgadmin.org/  下载最新版本v3.6 windows安装,step by step3.创建新的数据库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 小结:插入性能:mongo的效率为postgresql的10倍读取性能:无索引时,postgresql是mongo的6倍左右创建索引:postgrep要快,有索引查询不能确定查询时间差异

前几天看了一篇文章 发布在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=Sy@[email protected](); 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.set<a href="https://m.jb51.cc/tag/float/" target="_blank" >float</a>(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");
Sy@[email protected]( "ID = " + ID );
Sy@[email protected]( "name = " + name );;
Sy@R_404[email protected]();
}
rs.close();*/
stmt.close();
connection.close();
Sy@R
404[email protected]("耗时:"+(Sy@R[email protected]()-start)+" 毫秒");

    } catch<span> (ClassNotFoundException e) {        e.<a href="https://www.jb51.cc/tag/printstacktrace/" target="_blank" >printstacktrace</a>();    } catch<span> (<a href="https://www.jb51.cc/tag/sql/" target="_blank" >sql</a>Exception e) {        e.<a href="https://www.jb51.cc/tag/printstacktrace/" target="_blank" >printstacktrace</a>();    }}</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倍

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

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

以上是内存溢出为你收集整理的数据库新秀 postgresql vs mongo 性能PK全部内容,希望文章能够帮你解决数据库新秀 postgresql vs mongo 性能PK所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1169196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存