KunlunDB 0.9.1版本Sysbench效能測試報告

KunlunDB發表於2022-05-11

概述

kunlun-0.9.1的效能測試主要使用Sysbench進行,分為oltp測試和olap測試兩大部分。

  • 對於oltp測試,主要包含4種操作:read&write、write only、update_non_index、update_index,測試目的主要是檢查新推出的強一致性模式(rbr),對比MySQL的官方強一致性方案(mgr)效能有多大提升。由於網路不是瓶頸,主要在內網的機器中進行。

  • 對於olap測試,則主要包含: point select、simple range select、sum range select, order by range select、distinct range select,主要在AWS EC2的機器上執行,因為某些select操作對網路要求很高,少量操作就能用滿千兆網,需要萬兆網才能測出最好效能。另一目的則是衡量AWS上不同配置的效能價格比。

oltp測試

基本配置情況

本測試分為2個部分:

  • rbr: 使用RBR複製模式構建的叢集,此為企業版獨有。

  • mgr: 使用MGR複製模式構建的叢集,此為開源版和企業版都有。

客戶端: 測試客戶端使用一臺AMD Ryzen 9 5950X + 64GB記憶體的機器,其上部署sysbench以及HAProxy, sysbench將請求發往HAProxy, HAProxy將請求發往三個計算節點。

資料:總共為18個表,每個表1000萬記錄,總資料量為36G,分到3個Shard裡面,資料在shard間均勻分佈,每個shard含有6個表,12G。

叢集配置:叢集使用三臺機器,且做對等部署, 每臺機器上部署一個後設資料節點,一個計算節點, 一個shard的primary和另外兩個shards的replicas,三臺機器配置為:

  • § AMD Ryzen 9 5950X + 64G + 1TB SSD

  • § AMD Ryzen 9 5950X + 128GB + 1TB SSD

  • § AMD Ryzen 9 5950X + 128GB + 1TB SSD

快取命中率: 每個資料節點innodb_buffer_pool_size為12G,meta node的innodb_buffer_pool_size為512MB,快取命中100%,計算節點使用預設的記憶體配置。

測試情況:

  • 測試執行緒為:300 400 500 600 700 800 900 1000。

  • 總共測試四種操作:read&write、write only、update_non_index、update_index。

  • 每個執行緒下每個操作執行時間為5分鐘。

測試結果

總體結果:

  • rbr為0.9.1版本新推出的,針對mgr複製模式的改進模式,從測試結果看,效能提升顯著。

  • 對於read&write:中低(<=600)執行緒下,mgr和rbr表現差不多,執行緒數>=700時, rbr對比mgr產生較大效能差,最高到接近3倍。

  • 對於write only:低(<=400)執行緒下, rbr約為mgr的1.5倍,中高執行緒下,rbr為mgr的2倍以上。

  • 對於update_non_index和update_index:rbr平均超過mgr的2倍。

read&write

Sysbench命令:

./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname--oltp_tables_count=$tblcnt --oltp-table-size=$tblsize  --oltp-write->

rbr的結果:
image.png

mgr的結果:
image.png

image.png

write only

Sysbench命令:

./sysbench --max-time=300--test=tests/db/oltp.lua --pgsql-host=$host --pgsql-port=$port --pgsql-db=$dbname --oltp_tables_count=$tblcnt--oltp-table-size=$tblsize --oltp-write->

rbr的結果:

image.png

mgr的結果:

image.png

image.png

update_non_index

Sysbench命令:

./sysbench --max-time=300--test=tests/db/update_non_index.lua --pgsql-host=$host --pgsql-port=$port --pgsql-db=$dbname --oltp_tables_count=$tblcnt--oltp-table-size=$tblsize --oltp-write->

rbr的結果:

image.png

mgr的結果:

image.png

image.png

update_index

Sysbench命令:

./sysbench --max-time=300--test=tests/db/update_index.lua --pgsql-host=$host  --pgsql-port=$port--pgsql-db=$dbname --oltp_tables_count=$tblcnt --oltp-table-size=$tblsize--oltp-write->

rbr的結果:

image.png

mgr的結果:

image.png

image.png

olap測試

olap測試根據資源利用的情況,調整了機型的配置,以衡量不同配置下叢集的整體表現,這裡主要使用三種配置(僅列出不同):

  • 配置1:計算節點使用3臺C5.4xlarge, 儲存節點使用3臺i3.4xlarge,此配置僅測了point select的操作,因為很快發現儲存節點CPU成為瓶頸。

  • 配置2:計算節點使用3臺C5.4xlarge, 儲存節點使用3臺c5d.9xlarge

  • 配置3:計算節點使用3臺C5.9xlarge, 儲存節點使用3臺c5d.9xlarge

基本配置情況

本測試使用RBR複製模式構建的叢集,此為企業版獨有。

測試客戶端採用3臺C5.4xlarge來執行sysbench, 通過aws load balancer做分流,將請求發向3個計算節點。

叢集配置:

  • rbr: 後設資料叢集使用3臺m5.xlarge, 包含3個shards, 每個shard都是三副本,每臺儲存機器上具有一個shard的primary和另外兩個shards的replicas.

資料:總共為18個表,每個表1000萬記錄,總資料量為36G,資料在shard間均勻分佈,每個shard含有6個表,12G。

快取命中率:每個資料節點innodb_buffer_pool_size為20G,meta node的innodb_buffer_pool_size為1G,快取命中100%。

測試情況:

  • 每臺sysbench客戶端測試執行緒為:50 100 200 300 400 500。

  • 總共測試5種操作: point selects、simple range selects、sum range selects、order by range selects、distinct range selects。

  • 每個執行緒下每個操作執行時間為5分鐘。

叢集成本:

  • 配置1 = 3 (m5.xlarge + i3.4xlarge + c5.4xlarge) = 3 * (1.356 + 9.365 + 3.943) = 3 * 14.664 = 44 CNY / hour。

  • 配置2 = 3 (m5.xlarge + c5d.9xlarge + c5.4xlarge) = 3 * (1.356 + 10.721 + 3.943) = 3 * 16.02 = 48 CNY / hour。

  • 配置3 = 3 (m5.xlarge + c5d.9xlarge + c5.9xlarge) = 3 * (1.356 + 10.721 + 8.872) = 3 * 20.949 = 63 CNY / hour。

測試結果

總體結果分析:

  • 通過使用aws cloudwatch分析EC2的資源利用情況,能夠更好的發現效能瓶頸,以便調整配置獲得更好的效能價格比。

  • 測試的目的之一是為了衡量雲上不同配置下的效能價格比,每個具體操作後面都給出了價效比的折線圖,更直觀的顯示對比結果。從結果上看,配置3能夠更好發揮叢集各部分的整體效能,具有更高的效能價格比(qps/price per hour)。

  • 由於儲存節點基於mysql開發, 具有完整的SQL解析執行功能,儲存節點比其他競品的儲存節點具有更強大的功能,但也要求更高的CPU,在複雜查詢下效能也更出色。

  • 除point select外的其他聚集類查詢對網路要求較高,在AWS上更容易展現出高效能,機房內的1Gb/s的網路中,網路先到瓶頸,無法測出高效能。

point selects

Sysben命令:

 ./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname--oltp_tables_count=$tblcnt --oltp-table-size=$tblsize --oltp-write->

rbr模式的結果:

image.png

image.png

simple range selects

Sysbench命令:

./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname --oltp_tables_count=$tblcnt--oltp-table-size=$tblsize --oltp-write->

rbr模式的結果:

image.png

image.png

sum range selects

Sysbench命令:

./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname--oltp_tables_count=$tblcnt --oltp-table-size=$tblsize --oltp-write->

rbr模式的結果:

image.png

image.png

order by range selects

Sysbench命令:

./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname--oltp_tables_count=$tblcnt --oltp-table-size=$tblsize --oltp-write->

rbr模式的結果:

image.png

image.png

distinct range selects

Sysbench命令:

./sysbench --max-time=300 --test=tests/db/oltp.lua  --pgsql-host=$host  --pgsql-port=$port --pgsql-db=$dbname --oltp_tables_count=$tblcnt--oltp-table-size=$tblsize --oltp-write->

rbr模式的結果:

image.png

image.png

END

崑崙資料庫是一個HTAP NewSQL分散式資料庫管理系統,可以滿足使用者對海量關係資料的儲存管理和利用的全方位需求。
應用開發者和DBA的使用崑崙資料庫的體驗與單機MySQL和單機PostgreSQL幾乎完全相同,因為首先崑崙資料庫支援PostgreSQL和MySQL雙協議,支援標準SQL:2011的 DML 語法和功能以及PostgreSQL和MySQL對標準 SQL的擴充套件。同時,崑崙資料庫叢集支援水平彈性擴容,資料自動拆分,分散式事務處理和分散式查詢處理,健壯的容錯容災能力,完善直觀的監測分析告警能力,叢集資料備份和恢復等 常用的DBA 資料管理和操作。所有這些功能無需任何應用系統側的編碼工作,也無需DBA人工介入,不停服不影響業務正常執行。
崑崙資料庫具備全面的OLAP 資料分析能力,通過了TPC-H和TPC-DS標準測試集,可以實時分析最新的業務資料,幫助使用者發掘出資料的價值。崑崙資料庫支援公有云和私有云環境的部署,可以與docker,k8s等雲基礎設施無縫協作,可以輕鬆搭建雲資料庫服務。
請訪問   獲取更多資訊並且下載崑崙資料庫軟體、文件和資料。
KunlunDB專案已開源
【GitHub:】

【Gitee:】


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

相關文章