原文链接:https://www.cnblogs.com/blog5277/p/10658426.html

原文作者:博客园--曲高终和寡

*******************如果你看到这一行,说明爬虫在本人还没有发布完成的时候就抓走了我的文章,导致内容不完整,请去上述的原文链接查看原文****************

由于最近经过朋友启发,又有了一个写个人项目的小想法,在这次个人项目中准备学习并使用一些之前自己没有掌握的新技术,其中,在项目准备的时候,准备爬一些数据做储备。

过去的项目,都对数据写入没有硬性要求,所以之前就是写了爬虫放那不管了,这次由于项目的需求,需要大量快速的爬取/复制/写入数据,我就发现我现在用的Mysql并不能满足我的需求,奇慢无比。经过对比评测,初步决定选用PostgresQL替换掉Mysql。

〇:先摆结论

写入速度:

Mysql:  8.5/s

PostgresQL:   800/s

读取速度:

待Mysql龟速插完100W条数据后再说,要不然不公平

一:前期调查

如果一个市场占有率小的数据库(根据谷歌趋势),口碑/媒体评测/个人评测都不如Mysql的话,那就不用考虑了。

经过调查,不管是百度、谷歌搜出来的绝大部分结果都是PostgresQL强得多,也符合我自己的评测结果。

有一个关于PostgresQL的负面新闻是,Uber从PostgresQL转为Mysql,但是经过更多的调查发现,这并不完全是PostgresQL的问题,比如如下文章:

http://www.sohu.com/a/108363951_465959

https://m.aliyun.com/yunqi/articles/79658

就解释了这个问题,我个人经过调研是更倾向于PostgresQL的

二:准备工作

1.一台阿里云服务器,1核2G1M带宽I/O优化硬盘(应该是SSD)

2.Mysql 5.7,PostgresQL 11(Mysql版本低是因为我看宝塔推荐Mysql 8.0需要有2G内存最好,可是我这辣鸡服务器总共内存才2G,所以不考虑8.0,更何况从最后的测试结果来看,我不相信换成8.0能弥补这个差距),全部采用安装时的默认配置,不做任何优化(因为我不会),这样也可以看数据库自身,最大众的情况下的调教能力(在找借口),两台都部署在上述那台服务器上

3.建表和字段:

字段

Mysql格式

PostgresQL格式

id(uuid)

char(36)

char(36)

gmt_create

datetime

timestamp without timezone

gmt_modified

datetime

timestamp without timezone

content

varchar(20)

text

在id,gmt_create,content分别加了单索引

说明一下,PostgresQL的text属性是可无限填数据的,Mysql用的的可变字符varchar(20),而不是longtext,应该已经算优待Mysql了吧

4.数据插入方法:

模拟真实脚本环境,采用springboot+spring-data-jpa 造假数据插入,jpa开启批量插入设置,并可控制batch大小,经过多次测试找出最适合数据库的batch size大小。

为了避免服务器/运行环境资源争抢,一次只运行单个数据库的数据插入方法,下面是批量插入核心代码

三:测试插入

Mysql:

经过测试,Mysql入库速度大约是每秒10条左右,所以batch大小我设置为了5。

设置100会导致8秒1插(一开始数据库数量很少的时候,后面多了肯定还是会降),设置1000会抛异常,连接超时/重置/未响应等异常,这里不是我不给它设置大的,一开始设置了1000它真的扛不住!!!

以下是插入的时候控制台信息:

以下是workbench里面筛选1分钟录入数据的值:

这是只有40多万数据的时候的值,后面会更慢的,实在是懒得等了先把这部分先写了,所以得出结论:

Mysql的写入速度为:510 / 60 = 8  条数据每秒

PostgresQL:

经过测试,PostgresQL入库速度大约为每秒不到1000条,所以batch大小我设置了500。

以下是插入的时候控制台信息:

以下是pgadmin里面筛选1分钟录入数据的值:

所以得出结论:

PostgresQL的写入速度为:  48000 / 60 = 800  条数据每秒

这差距也太大了。。。大到我都不想再测100W条数据后,查数据的速度了。。。

还是等吧,我等到Mysql龟速插完100W条数据以后再来更新吧

pg和MySQL读性能_[评测]低配环境下,PostgresQL和Mysql读写性能简单对比相关推荐

  1. ubuntu mysql 修改 端口_在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限...

    操作系统:Ubuntu 17.04 64位 MySQL版本:MySQL 5.7 一.查看3306端口是否开放 netstat -an|grep 3306 如果看到下图这样的,说明端口并未打开: 二.修 ...

  2. 读《我不过低配的人生》笔记

    读<我不过低配的人生>笔记 1. 善听,做稀缺者 ->pg.18 "当人人都感觉存在感不足时,就标志着倾听者的稀缺.做一个稀缺者吧,任何时候稀缺的总是昂贵的." ...

  3. linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...

    CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache 由于最近工作中遇到了一个在比较老旧RedHat系Linux发行版系统上升级安装Apache ...

  4. 中科院刘康:低资源环境下的事件知识抽取

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  5. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  6. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享_PHP教程

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  7. IS环境下配置PHP5+MySql+PHPMyAdmin

    IIS环境下配置PHP5+MySql+PHPMyAdmin Posted on 2009-08-07 15:18 谢启祥 阅读(1385)评论(18) 编辑 收藏 虽然主要是做.net开发的,但是,时 ...

  8. MYSQL 5.7 解压版 windows 环境下安装

    MYSQL 5.7 解压版 windows 环境下安装 1.下载MYSQL 2.下载完成后,放入要部署目录,解压. 3.新建 my.ini 文件 data 子文件夹千万不要自己建,否则后续启动会报错 ...

  9. RHEL5.6环境下yum安装MySQL

    RHEL5.6环境下yum安装MySQL记录,2017年2月20日 1.卸载原有的MySQL rpm -qa命令查询是否安装了MySQL [root@localhost mysql]# rpm -qa ...

  10. liunx 环境下docker安装mysql

    liunx 环境下docker安装mysql 1.链接虚拟机 无界面启动 vagrant ssh name(虚拟机的名) 2.虚拟机上下载mysql5.7 docker pull mysql5.7 s ...

最新文章

  1. 中国人工智能源头创新的突破点在哪里?创投圈这么看
  2. 纯css实现移动端横向滑动列表
  3. VMware vCenter Converter 关闭SSL加密,提高35-40%性能
  4. node.js(八 --- express)
  5. (58)FPGA乘法器实现(task)
  6. 解决Navicat连接MySQL总是报错1251的方法
  7. 桌面计算机怎么覆盖文件,恢复被覆盖的文件_恢复被覆盖的桌面文件
  8. FMS3 客户端call服务器端
  9. Atitit 号码规范 靓号指南 attilax总结 v4 r926.docx
  10. JDBC:深入理解PreparedStatement和Statement
  11. Autodesk 3DSMax 2016 安装注册说明
  12. 五险一金及个税计算器
  13. QT QFileDialog文件对话框
  14. B5服务器内昵称注册,CSGO-B5开放注册
  15. python3中的@abstractmethod的用法
  16. du命令参数-h/-s
  17. conda使用清华镜像安装pytorch
  18. 计算机基础知识表格斜线,在WORD中,其中一个表格里画一斜线怎么画?
  19. Oracle DUL Data Unloader数据恢复工具信息汇总
  20. 数据中心网络布线为大数据时代铺路

热门文章

  1. python3实用小工具--语言翻译器(附源码)
  2. ABAP 供应商主数据比较常用的表
  3. Java接口配置框架magic-api
  4. mysql数据迁移双写_【数据迁移】在线数据迁移 :双写数据库、搬历史数据、切换写入、灰度验证(99.9999%)、删除历史-Go语言中文社区...
  5. 《Option Volatility Pricing》阅读笔记之 Volatility(波动率)
  6. [转载]MIS专业排名
  7. Mybatis 事务管理器 TransactionManager
  8. R语言:方差分析,单因素方差分析,单个协变量的单因素方差分析,双因素方差分析,多元方差分析
  9. 修复黑客利用Freemius类绕过过身份验证的选项(漏洞-wordpress)
  10. Matplotlib之散点图绘制