1. 程式人生 > >[評測]低配環境下,PostgresQL和Mysql讀寫性能簡單對比

[評測]低配環境下,PostgresQL和Mysql讀寫性能簡單對比

性能 spa table -- 前期調查 body 其中 完全 如果

[評測]低配環境下,PostgresQL和Mysql讀寫性能簡單對比

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

原文作者:博客園--曲高終和寡

*******************如果你看到這一行,說明爬蟲在本人還沒有發布完成的時候就抓走了我的文章,導致內容不完整,請去上述的原文鏈接查看原文****************

由於最近經過朋友啟發,又有了一個寫個人項目的小想法,在這次個人項目中準備學習並使用一些之前自己沒有掌握的新技術,其中,在項目準備的時候,準備爬一些數據做儲備。

過去的項目,都對數據寫入沒有硬性要求,所以之前就是寫了爬蟲放那不管了,這次由於項目的需求,需要大量快速的爬取/復制/寫入數據,我就發現我現在用的Mysql並不能滿足我的需求,奇慢無比。經過對比評測,初步決定選用PostgresQL替換掉Mysql。

一:前期調查

如果一個市場占有率小的數據庫(根據谷歌趨勢),口碑/媒體評測/個人評測都不如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大小。

為了避免服務器/運行環境資源爭搶,一次只運行單個數據庫的數據插入方法

[評測]低配環境下,PostgresQL和Mysql讀寫性能簡單對比