云數(shù)據(jù)庫(kù) VS 自建數(shù)據(jù)庫(kù),到底該如何抉擇?

一 前言
有贊的基礎(chǔ)架構(gòu)使用了UCloud的基礎(chǔ)服務(wù),我們有相當(dāng)比例的數(shù)據(jù)庫(kù)是UCloud的RDS(一部分使用云RDS,一部分使用購(gòu)買(mǎi)他們的物理服務(wù)器自建數(shù)據(jù)庫(kù))。
近期我們了解到 UCloud 推出一款基于快杰主機(jī)的UDB實(shí)例,因?yàn)樗麄冊(cè)谡麢C(jī)架構(gòu)上針對(duì)CPU,OS內(nèi)核 ,磁盤(pán),網(wǎng)絡(luò)結(jié)構(gòu)有比較大的改進(jìn)和增強(qiáng),數(shù)據(jù)庫(kù)性能也有很大的性能提升。
所以本文寫(xiě)寫(xiě)針對(duì)快杰UDB和基于快杰自建實(shí)例的性能測(cè)試對(duì)比,為我們以后的實(shí)例選型做個(gè)技術(shù)參考。
什么是快杰?
其實(shí)快杰就是云主機(jī),不是單獨(dú)的物理服務(wù)器,基于物理機(jī)做了一層分布式存儲(chǔ)系統(tǒng),利用CPU 網(wǎng)絡(luò)等硬件技術(shù),優(yōu)化OS內(nèi)核,它具有以下特性:
計(jì)算、存儲(chǔ)與網(wǎng)絡(luò)性能卓越的旗艦云主機(jī)。
支持AMD?第二代EPYC?CPU(2.9GHz主頻)或?Intel?Cascadelake?CPU(2.5GHz主頻)
最大網(wǎng)絡(luò)性能達(dá)到1000W?PPS,最大存儲(chǔ)性能達(dá)到120W?IOPS。
規(guī)格靈活,最高支持96核768G的超大規(guī)格實(shí)例。
在Web服務(wù),游戲服務(wù),數(shù)據(jù)庫(kù),數(shù)據(jù)分析處理等絕大多數(shù)場(chǎng)景表現(xiàn)出色,性?xún)r(jià)比極佳。
從官網(wǎng)上來(lái)看一個(gè)比較重要的特性是磁盤(pán)空間可以拓展到32T ,這個(gè)算是比較吸引我們的一個(gè)特性,運(yùn)維數(shù)據(jù)庫(kù)的過(guò)程中經(jīng)常遇到空間不足的情況,必須遷移實(shí)例,調(diào)整到其他機(jī)器上,成本比較高。
本文測(cè)試的是基于Intel CPU的快杰機(jī)型,(和一些硬件的朋友聊 AMD指令集對(duì)MySQL的運(yùn)行可能和Intel指令集合的結(jié)果不一樣。)
二 環(huán)境準(zhǔn)備
UCloud的 數(shù)據(jù)庫(kù)版本 MySQL 5.7.25。
RDS 實(shí)例選擇選用他們默認(rèn)的 my.cnf 模板。核心參數(shù)配置如下:
|?binlog_format??????????????????|?ROW??????????????????|
|?innodb_adaptive_flushing???????|?ON???????????????????|
|?innodb_adaptive_hash_index?????|?ON???????????????????|
|?innodb_buffer_pool_instances???|?8????????????????????|
|?innodb_buffer_pool_size????????|?8589934592???????????|
|?innodb_file_per_table??????????|?ON???????????????????|
|?innodb_flush_log_at_trx_commit?|?2????????????????????|
|?innodb_flush_method????????????|?O_DIRECT?????????????|
|?innodb_io_capacity?????????????|?15000????????????????|
|?innodb_lock_wait_timeout???????|?50???????????????????|
|?innodb_log_buffer_size?????????|?8388608??????????????|
|?innodb_log_file_size???????????|?1073741824???????????|
|?innodb_log_files_in_group??????|?2????????????????????|
|?innodb_max_dirty_pages_pct?????|?50.000000????????????|
|?innodb_open_files??????????????|?1024?????????????????|
|?innodb_read_io_threads?????????|?8????????????????????|
|?innodb_write_io_threads????????|?8????????????????????|
|?innodb_stats_on_metadata???????|?OFF??????????????????|
|?innodb_thread_concurrency??????|?20???????????????????|
|?max_binlog_cache_size??????????|?18446744073709547520?|
|?max_binlog_size????????????????|?1073741824???????????|
|?max_connect_errors?????????????|?1000000??????????????|
|?max_connections????????????????|?2000?????????????????|
|?max_user_connections???????????|?0????????????????????|
|?open_files_limit???????????????|?1000000??????????????|
|?sync_binlog????????????????????|?1????????????????????|
|?table_definition_cache?????????|?464??????????????????|
|?table_open_cache???????????????|?128??????????????????|
|?thread_cache_size??????????????|?50???????????????????|
參數(shù)是UCloud默認(rèn)的,未做特別的優(yōu)化。
之前的壓測(cè)文章里面,沒(méi)有寫(xiě)壓測(cè)機(jī)器的配置和網(wǎng)絡(luò)時(shí)延,這次加上。
壓測(cè)機(jī)器配置
萬(wàn)兆帶寬
CPU

壓測(cè)機(jī)器到UDB的網(wǎng)絡(luò)時(shí)延 0.15-0.22ms 左右

壓測(cè)機(jī)器到自建Uhost 網(wǎng)絡(luò)時(shí)延0.22-0.3ms左右,的RT 大于到自建udb的0.05-0.1ms之間 。RT會(huì)影響測(cè)試效果

測(cè)試工具 sysbench 0.5 版本 。
測(cè)試場(chǎng)景
100張表,每張表10w行數(shù)據(jù),共1kw數(shù)據(jù)量,數(shù)據(jù)庫(kù)內(nèi)存設(shè)置為32G
壓測(cè)腳本如下:
#!/bin/bash
threads="12
24
36
48
60
72
84
96
108"
dt=`date?+"%Y%m%d%H%M%S"`
mkdir?-p?/root/yace_$dt
/root/doDBA?-mysql?-log?&
for?i?in?$threads;?do
????echo?$i
????time=`date?+"%Y%m%d%H%M%S"`
????/opt/yz-sysbench/bin/sysbench?--test=/opt/yz-sysbench/share/sysbench/oltp.lua?--oltp-tables-count=100?--oltp-table-size=100000?--mysql-db=sysbench?--mysql-user=sysbench?--mysql-password=sysbench?--mysql-host=xx.xx.xx.xx?--mysql-port=3306??--max-time=500?--max-requests=0?--oltp-test-mode=complex???--num-threads=$i??run?>?/root/yace_$dt/thread_$i_$time.log
????sleep?60
done
p=`pidof?doDBA`
kill?-9?$p
三 測(cè)試結(jié)果
內(nèi)存模型壓測(cè)結(jié)果對(duì)比:
QPS

insert/delete

update

從測(cè)試結(jié)果上來(lái)看,qps基于快杰的UDB性能比基于快杰自建的數(shù)據(jù)庫(kù)性能要好20%以上。
?其實(shí)測(cè)試了 IO 類(lèi)型的壓測(cè)結(jié)果對(duì)?,可能由于壓測(cè)時(shí)間比較短, 及云盤(pán)性能存在抖動(dòng)等因素,測(cè)試數(shù)據(jù)結(jié)果波動(dòng)較大,另咨詢(xún)UCloud的技術(shù)?員,我購(gòu)買(mǎi)的 機(jī)器將進(jìn)行固件升級(jí),這個(gè)升級(jí)后可以再做?次IO 類(lèi)型的測(cè)試。
兩者的價(jià)格對(duì)比
UDB數(shù)據(jù)庫(kù)費(fèi)用
UHost自建機(jī)器費(fèi)用

創(chuàng)建高可用的UDB和兩臺(tái)快杰Uhost的直接價(jià)格,基于快杰自建5602 元/月,基于快杰的UDB 5160 元/月價(jià)格更實(shí)惠。
從性?xún)r(jià)比上來(lái)說(shuō)如果沒(méi)有自建的運(yùn)維平臺(tái),基于UHost自建數(shù)據(jù)庫(kù)需要額外的運(yùn)維系統(tǒng)(備份,監(jiān)控,報(bào)警,HA等),開(kāi)發(fā)運(yùn)維部署這些也需要人力成本,總而言使用基于快杰的UDB更劃算。
四 小結(jié)
近年來(lái) 云RDS 性能的突飛猛進(jìn)離不開(kāi)底層cpu、磁盤(pán)、網(wǎng)絡(luò)等方面技術(shù)的快速發(fā)展。UCloud快杰UDB的性能能夠滿(mǎn)足絕大多數(shù)業(yè)務(wù)運(yùn)行的性能容量需求(大量 bad sql 除外)。
從測(cè)試結(jié)果上來(lái)看,基于快杰的數(shù)據(jù)庫(kù)性能表現(xiàn)有比較高的漲幅,性?xún)r(jià)比還不錯(cuò)。對(duì)于UDB客戶(hù)而言選擇基于快杰的UDB是個(gè)不錯(cuò)的選擇。
-The End-
本公眾號(hào)長(zhǎng)期關(guān)注于數(shù)據(jù)庫(kù)技術(shù)以及性能優(yōu)化,故障案例分析,數(shù)據(jù)庫(kù)運(yùn)維技術(shù)知識(shí)分享,個(gè)人成長(zhǎng)和自我管理等主題,歡迎掃碼關(guān)注。
