成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle和MySQL的JDBC到底有多慢?

數據庫 Oracle MySQL
經常聽人說,數據庫的IO性能不佳,但說歸說,并沒有感性認識。我們現在就來實際測試一下,常用的Oracle和MySQL的JDBC讀取性能如何。

經常聽人說,數據庫的IO性能不佳,但說歸說,并沒有感性認識。我們現在就來實際測試一下,常用的Oracle和MySQL的JDBC讀取性能如何。

之所以測試JDBC,是因為大部分應用是JAVA寫的,也就只能用JDBC來訪問數據。這里僅測試用JDBC讀出數據,并產生成Java的記錄對象(畢竟到了這一步才能在應用中使用),不作任何計算。

1. 數據來源

使用TPCH生成的數據,選用其中的customer表來做測試,數據記錄為3000萬行,8個字段。它生成的原始文本文件名為customer.tbl,文件大小為4.9G。利用數據庫提供的數據導入工具將此文件數據導入到Oracle和MySQL的數據表中。

2. 測試環境

在一臺Intel服務器上完成測試,2個Intel2670 CPU,主頻2.6G,共16核,內存64G。數據庫表數據及文本文件均存儲在同一塊SSD硬盤上。

所有測試均在服務器本機上完成,沒有消耗網絡傳輸時間。

3. 數據庫讀數測試

通過Oracle提供的JDBC接口,用SQL語句執行數據讀取。

Java寫起來麻煩,用SPL腳本執行測試:

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

MySQL的測試代碼類似,不再贅述。

測試結果(時間單位:秒)

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

第二次可能由于操作系統有了硬盤緩存,所以更快。因為我們主要是為了測試JDBC的讀取時間,所以就以第二次為準,減少數據庫本身從硬盤讀數的影響。每秒讀出行數也是按第二次時間來計算的,也就是說,Oracle每秒能讀出10萬行多數據,MySQL大概接近8萬行。當然這個值和表的字段數及類型都有關(customer表有8個字段),只是一種參考。

4. 文本文件對比

只從上面的數據量還沒有太多感性認識,我們再讀一下文本文件來對比。辦法是一樣的,從文件中讀出數據,并解析出記錄,不作任何計算。

編寫如下SPL腳本執行測試:

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

測試結果是42秒!

這意味著,讀取文本要比讀取Oracle快281/42=6.69倍,比MySQL要快381/42=9.07倍!

我們知道,文本解析是個非常麻煩的事情,但即使這樣,從文本文件讀取數據還是遠遠快于從數據庫中讀數。Oracle和MySQL的IO實在是太慢了!

5. 二進制方式

我們進一步再看使用二進制方式的存儲格式的讀取性能,并和文本比對。

為了對比明顯,這次換一個更大的表,用TPCH中的orders表,有3億行數據,9個字段。

文本讀取的代碼和上面類似,讀取時間測試為438秒。

然后,我們將這個文本文件轉換成SPL組表,再寫代碼測試:

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

測試結果是164秒,大概僅僅是文本讀取的三分之一。

這是情理之中的事情,因為二進制數據不再需要解析,可以直接產生對象,計算量少了很多,因而要更快。

需要說明的是,組表文件雖然采用列存格式,但在這里讀出了所有列,并沒有比文本少取任何內容,沒有占列存的便宜。事實上,因為讀所有列,使用列存還會吃點虧,如果采用SPL集文件(一種行存格式)還會更快。

6. 并行提速

從文件中取數還很容易實現并行,文本和組表都容易寫出并行程序。還是用上面的orders表為例來測試,使用4線程取數。

文本取數代碼:

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

組表取數代碼:

Oracle 和 MySQL 的 JDBC 到底有多慢?

 

用SPL很容易實現數據分段和并行計算。

測試結果為:

文本 119秒

組表 43秒

與串行相比,接近了線性提升,將CPU的多核充分利用起來了。

數據庫中的數據則不容易簡單地實施分段并行,需要用WHERE條件去拼,結果很難說清到底是并行不力還是WHERE執行損失太多,測試結果的參考意義就打折扣了,這里就不再做了。

7. 結論

數據庫(Oracle和MySQL)的JDBC性能非常非常差!比文本文件還要差5倍以上。而采用二進制數據時,會比文本再提高3倍的讀取性能。也就是說,合理格式的二進制文件會比數據庫有15倍以上的優勢。再考慮到并行因素,比數據庫快出幾十上百倍也是完全可能的。

在關注性能且數據量較大時,千萬不要把數據讀出數據庫計算!

如果實在需要讀出后再計算(有時SQL很難寫出復雜的過程計算),就不要再用數據庫存儲了(大數據都是歷史,基本也不再改了,可以事先讀出),用文本都比數據庫強,用二進制當然更好(推薦使用SPL組表,哈哈)。切不要把時間浪費在讀數這種非計算任務上了。 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2018-05-15 09:24:19

硬盤網絡CPU

2020-08-05 07:00:00

SSD硬盤存儲

2021-09-06 10:45:18

XDRMDR

2024-02-26 07:36:09

lockJava語言

2022-09-01 21:02:31

手機衛星5G

2016-09-22 16:47:55

iOSAndroidWindows Pho

2020-12-14 09:46:57

DDoS攻擊網絡攻擊網絡安全

2022-05-10 15:10:25

加密貨幣區塊鏈金融犯罪

2012-08-23 14:21:47

大數據

2012-08-23 15:10:44

Facebook

2023-11-02 08:44:58

2020-02-27 08:52:51

NFVSDN網絡

2021-12-31 09:23:22

SDNSD-WAN網絡技術

2018-06-27 10:14:21

MySQL日志‘類型

2019-10-08 14:25:50

AndroidiOS安卓

2022-09-27 09:43:08

物聯網設備物聯網

2024-10-15 09:48:56

2021-03-09 05:49:32

通信女性從業者通信行業

2012-05-31 09:24:55

云計算云存儲

2019-01-21 08:13:27

RAID類型磁盤
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美成人h版在线观看 | 91精品在线看 | 久久精品欧美一区二区三区不卡 | 91精品久久久 | a在线视频 | 成人精品在线视频 | 精品人伦一区二区三区蜜桃网站 | 中文字幕乱码视频32 | 日韩一二三区 | 在线观看黄色大片 | 欧美一区二区三区,视频 | 亚洲精品日韩精品 | 成人精品鲁一区一区二区 | 久草视频2| 欧美日韩一卡 | 日韩中文一区二区三区 | 成人a视频在线观看 | 在线观看中文字幕 | 欧洲毛片| 日韩中文一区二区三区 | 欧美一区二区三区在线观看 | 黄色网址av| 三级黄色网址 | 一级无毛片| 日韩福利在线观看 | 日韩一区二区三区四区五区六区 | 免费看黄色视屏 | 日日夜夜天天综合 | 久久久久国产一区二区三区 | av国产在线观看 | 国产情品 | 天堂亚洲网 | 久久亚洲国产精品 | 国产国产精品 | 9191在线播放 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 久草热播 | 中文字幕av第一页 | 国产1区在线| 国产精品一区二区三区免费观看 | 国内精品久久久久久久影视简单 |