再測云原生數(shù)據(jù)庫性能:PolarDB依舊最強,TDSQL-C、GaussDB變化不大
1.摘要
近期,騰訊云數(shù)據(jù)庫在文章「騰訊云TDSQL-C重磅升級,性能全面領跑云原生數(shù)據(jù)庫市場」中提到,某些場景下性能有非常大的提升,且超過國內(nèi)某橙色云廠商。恰好,在5月份,我們對各個廠商的云原生數(shù)據(jù)庫進行過一次壓測,所以,看到文章,我們第一時間做了驗證。具體的,驗證內(nèi)容包括:
-
當前的TDSQL-C性能與五月份相比,是否有明顯增強
-
不同廠商的云原生數(shù)據(jù)庫性能是否有明顯變化
具體的信息查看:「再測云原生數(shù)據(jù)庫性能:PolarDB依舊最強,TDSQL-C、GaussDB變化不大」,該內(nèi)容同步發(fā)布于微信公眾號:「云數(shù)據(jù)庫技術(shù)」,歡迎訂閱,第一時間獲取信息。
2.測試結(jié)果
- TDSQL-C在「讀寫混合」場景下,5月、6月性能并沒有明顯變化

- 各云廠商在「讀寫混合」、「只讀」、「只寫」場景下的壓測結(jié)果:阿里云的PolarDB性能最好,其次是華為云的GaussDB、騰訊云的TDSQL-C:
測試下來,暫時沒有感受到TDSQL-C “重磅升級” 。針對這個問題也通過工單方式咨詢了騰訊云的服務人員,得到的答復是:TDSQL-C 的全面升級還沒有覆蓋所有的地域,目前只在指定地域上線,且還需要開通白名單。
事實證明,白興奮一場,只能等后續(xù)新版本更大范圍開放后再測試了。另外,也希望廠商在宣傳的時候,說得更清楚一些,否則會讓客戶困惑。
3.測試說明
這里對我們的測試方式做一個詳細說明。本次測試選擇了各個廠商的4c16g的規(guī)格進行橫向?qū)Ρ龋褂昧斯ぞ遱ysbench 1.0.20版本進行測試。具體的,在「讀寫」、「只讀」、「只寫」3個場景下進行2~512個線程的壓測, 獲取每秒執(zhí)行事務數(shù)TPS(Transactions Per Second)、每秒執(zhí)行請求數(shù)QPS(Queries Per Second)來作為性能對比指標。
測試的數(shù)據(jù)庫規(guī)格:

各個云廠商的云原生數(shù)據(jù)庫都使用默認配置參數(shù)(開箱即用)。
客戶端規(guī)格:

測試命令:
-- 準備數(shù)據(jù) sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300 --threads={2~512} oltp_read_write prepare -- 運行workload # OLTP讀寫混合 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300 --threads={2~512} --percentile=95 --report-interval=1 oltp_read_write run # OLTP只讀場景 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300 --threads={2~512} --percentile=95 --report-interval=1 oltp_read_only run # OLTP只寫場景 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300 --threads={2~512} --percentile=95 --report-interval=1 oltp_write_only run -- 清理數(shù)據(jù) sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300 --threads={2~512} --percentile=95 oltp_read_write/oltp_read_only/oltp_write_only cleanup
說明:10張表,每張表1000萬數(shù)據(jù),數(shù)據(jù)集約25G,2~512個線程進行壓測。
補充說明:-
阿里云使用:主地址(高可用地址,用RW表示)和 集群地址(自動讀寫分離地址,用Proxy表示)
-
騰訊云使用:讀寫內(nèi)網(wǎng)地址(高可用地址,用RW表示)和 只讀內(nèi)網(wǎng)地址(高可用地址,用RO表示)
-
華為云使用:讀寫內(nèi)網(wǎng)地址(高可用地址,用RW表示)和 數(shù)據(jù)庫代理地址(自動讀寫分離地址,用Proxy表示),還有直連后端Server節(jié)點(單點)地址(用SRW和SRO表示)。
-
使用Proxy時需要注意:
-
Proxy有一定的鏈路開銷,在沒有使用到讀寫分離的情況下,性能會降低。
-
騰訊云暫不支持自動讀寫分離Proxy;阿里云的Porxy在自動讀寫分離上支持的最好;華為云的Proxy需要開啟參數(shù)--skip-trx(非事務模式)才能使用從節(jié)點,支持的不友好(本文測試沒有開啟該參數(shù))。
-
華為云Proxy受CPU和寬帶限制:
CPU個數(shù)小于"16":50MB CPU個數(shù)小于"32":100MB, CPU個數(shù)小于"64":200MB, CPU個數(shù)小于"128":400MB CPU個數(shù)小于"256":1000MB, 最大2000MB
4.測試詳情
4.1 TDSQL-C 升級之后是否有提升?
讀寫場景:

從表中數(shù)據(jù)的對比看到:2次壓測數(shù)據(jù)性能差距不大,TDSQL-C性能沒有提升,原因見「測試結(jié)果」中的說明。
4.2 TDSQL-C性能有沒有超越業(yè)內(nèi)其他云原生數(shù)據(jù)庫產(chǎn)品?
讀寫場景:



讀寫場景結(jié)論
-
不算Proxy的情況下,性能上「阿里云-RW」比「華為云-RW」高12%,比「騰訊云-RW」高37%。
-
算上Proxy的情況下,性能上「阿里云-Proxy」比「阿里云-RW」高47%;「華為云-Proxy」比「華為云-RW」低24%,「阿里云-Proxy」比「華為云-Proxy」高61%。
-
華為云Proxy性能低的原因是其Proxy不支持事務拆分,雖然通過Proxy地址,但也只在主節(jié)點上執(zhí)行(未開啟--skip-trx參數(shù):是否跳過SQL語句開頭的begin和結(jié)尾的commit)。
從QPS和TPS的平均值之和,性能從高到低依次排序為:「阿里云-Proxy」> 「阿里云-RW」> 「華為云-RW」 > 「騰訊云-RW」 > 「華為云-Proxy」
只讀場景:




只讀場景結(jié)論:
-
不算Proxy的情況下,性能上「阿里云-RW」比「華為云-RW」高11%,比「騰訊云-RW」高56%。
-
算上Proxy的情況下,性能上「阿里云-Proxy」比「阿里云-RW」高14%;「華為云-Proxy」比「華為云-RW」低27%;「阿里云-Proxy」比「華為云-Proxy」高100%。
-
華為云Proxy性能低的原因是其Proxy不支持事務拆分,雖然通過Proxy地址,但也只在主節(jié)點上執(zhí)行(未開啟--skip-trx參數(shù):是否跳過SQL語句開頭的begin和結(jié)尾的commit)。
從QPS和TPS的平均值之和,性能從高到低依次排序為:「阿里云-Proxy」> 「阿里云-RW」> 「華為云-RW」 > 「華為云-Proxy」>「騰訊云-RW」
只寫場景:




只寫場景結(jié)論:
-
不算Proxy的情況下,性能上「阿里云-RW」比「華為云-RW」高21%,比「騰訊云-RW」高60%。
-
算上Proxy的情況下,性能上「阿里云-RW」比「阿里云-Proxy」高7%;「華為云-RW」比「華為云-Proxy」高18%;「阿里云-Proxy」比「華為云-Proxy」高35%。
-
Proxy性能低的原因是代理在增加了鏈路的前提下,寫都在主節(jié)點。
從QPS和TPS的平均值之和,性能從高到低依次排序為:「阿里云-RW」> 「阿里云-Proxy」> 「華為云-RW」 > 「華為云-Proxy」 > 「騰訊云-RW」
通過以上三個場景的壓測對比,可以看到TDSQL-C性能沒有超越業(yè)內(nèi)其他云原生數(shù)據(jù)庫產(chǎn)品,原因見本文「測試結(jié)果」中的說明。
5.總結(jié)
得到的數(shù)據(jù)是在TDSQL-C還沒有升級的情況下壓測的,通過各場景得出的QPS、TPS 的平均值之和來對比,結(jié)果如下:
-
讀寫場景下:「阿里云-Proxy」> 「阿里云-RW」> 「華為云-RW」 > 「華為云-Proxy」>「騰訊云-RW」
-
只讀場景下:「阿里云-Proxy」> 「阿里云-RW」> 「華為云-RW」 > 「華為云-Proxy」>「騰訊云-RW」
-
只寫場景下:「阿里云-RW」> 「阿里云-Proxy」> 「華為云-RW」 > 「華為云-Proxy」 > 「騰訊云-RW」
通過壓測數(shù)據(jù),看到當前性能最好的依舊是PolarDB。特別在自動讀寫分離(Proxy)的功能上,阿里云優(yōu)勢大于華為云(不支持事務拆分)和騰訊云(不支持讀寫分離地址)。也非常期待TDSQL-C 在“重磅升級” 之后帶來的性能提升。
后續(xù)等TDSQL-C升級覆蓋到更多地域之后,再進行測試驗證。希望通過本文,對大家在選擇云廠商的云原生數(shù)據(jù)庫產(chǎn)品時有幫助。

浙公網(wǎng)安備 33010602011771號