PostgreSQL vs. Oracle 測試

jesselyu發表於2015-01-05

PG vs. Oracle Sysbench 0.5  測試

 

一、目的

    此次測試的目的,僅作為Oracle向PostgreSQL遷移的廣義效能對比參考,應用針對性測試後續跟進。

 

二、測試

    

    測試工具統一採用Sysbench 0.5版本,此版本的一個亮點是測試模型使用lua指令碼。使用者可以根據自己的業務模型進行隨意定製。比以往版本更加靈活,去除了以前業務模型單一的詬病。

另外測試人員還可以指定測試結果展示時間間隔;以前版本只能在測試結束後,檢視壓測結果資料。目前sysbench 0.5對Oracle支援不好。我自己編寫了針對oracle資料庫的 lua指令碼
但是多執行緒這塊,需要自己編寫指令碼;num thread引數,對Oracle來講作用不大,隨著並行加大,tps並沒有上升。

    PostgreSQL以及Oracle位於同一臺資料庫伺服器;進行分開獨立壓測。

硬體配置如下:

CPU: Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,12 cores

記憶體:PG和oracle記憶體設定一樣,均為10G。

儲存:同為SSD儲存

 

 

效能測試對比圖如下。其中藍色線條代表PG tps,紅色線代表Oracle tps。64個併發下,同時達到tps最高點;Oracle最高tps為47K,PG為41K。

之後tps趨於穩定(但rt會增加,主要原因為超過系統最大併發能力後,sys switch 增加),這比之於沒有使用thread pool的 MySQL有很大的優勢。

如果MySQL沒有使用thread pool,超過最高tps後,隨著併發執行緒的增大,呈明顯下降趨勢。這也是為什麼MySQL5.6增加thread pool 的主要原因。

 

 

三、總結

 

   1.效能:從以上測試來看,PG和Oracle在使用sysbench 預設自帶業務模型時,Oracle效能比PG好10-18%左右。

   2.功能:因此次採用的模型為sysbench自帶業務模型。此業務模型只是單表主健訪問、索引列訪問與更新;沒有表關聯,基本上為資料庫最簡單功能。但事務模型比較複雜,

     其中包含10個主健查詢,4個範圍以及帶order by 查詢,2個update,1個insert,1個delete。

     因此本次測試不具有有業務代表性,主要為:

     I.多表關聯:使用Oracle資料庫的應用,都比較傳統。多表關聯非常普遍。在處理表join method, join order等上面,oracle資料庫在效能上比較有優勢。

     II.巢狀SQL處理:Oracle資料庫的應用,在分頁上基本上是用巢狀來處理的。那就會出現一個SQL,既有巢狀又有關聯的情況。此類屬於複雜SQL。

 

    基於以上考慮,接下來的壓測,需要將 務模型整合到 sysbench 0.5 中,對複雜 SQL 進行壓測。以評估 PostgreSQL Oracle 在處理複雜 SQL 上的效能差距。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30088583/viewspace-1391275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章