此次測試的TDSQL,是由騰訊云數(shù)據(jù)庫團(tuán)隊(duì)、金融云團(tuán)隊(duì)和騰訊TEG團(tuán)隊(duì)共同維護(hù)的金融級分布式架構(gòu)和MySQL內(nèi)核分支的統(tǒng)稱。目前,騰訊90%的金融、計費(fèi)、交易、區(qū)塊鏈等業(yè)務(wù)核心都承載在TDSQL架構(gòu)中,并已成功應(yīng)用于政府、銀行、保險、制造業(yè)、物流、電商等用戶。TDSQL提供專有云、公有云兩種部署方案,可以分配關(guān)系型數(shù)據(jù)庫(CDB)、分布式數(shù)據(jù)庫(DCDB)、分析性數(shù)據(jù)庫(ADB)實(shí)例。
TDSQL強(qiáng)大的性能,離不開軟硬件的共同支持,騰訊云技術(shù)團(tuán)隊(duì)通過對分布式架構(gòu)和數(shù)據(jù)庫內(nèi)核的深度優(yōu)化,同時借助英特爾?先進(jìn)技術(shù),讓TDSQL已經(jīng)成為金融企業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型的一大“利器”。
分布式架構(gòu)與數(shù)據(jù)庫內(nèi)核深度優(yōu)化
與傳統(tǒng)行業(yè)技術(shù)架構(gòu)不同,大型互聯(lián)網(wǎng)企業(yè)更傾向于使用分布式數(shù)據(jù)庫(DCDB),這是因?yàn)榛ヂ?lián)網(wǎng)應(yīng)用大多都面臨著高并發(fā)數(shù)據(jù)處理,海量數(shù)據(jù)存儲的需求;而分布式數(shù)據(jù)庫底層將實(shí)際計算和存儲數(shù)據(jù)的物理表進(jìn)行自動水平拆分,通過讓負(fù)載均勻的分布到每個數(shù)據(jù)庫物理節(jié)點(diǎn)中,有效的提高了數(shù)據(jù)庫的擴(kuò)展能力。目前,騰訊充值及其相關(guān)合作伙伴的日流水量超過150億,托管賬戶接近280個億,而其中類似于春節(jié)紅包,節(jié)日大促,營銷活動,其訪問流量經(jīng)常超過日均值的2倍、10倍或更多,如果用傳統(tǒng)方案來支撐,性能和成本將無法想象。
在內(nèi)核層面,騰訊云數(shù)據(jù)庫團(tuán)隊(duì)對數(shù)據(jù)庫內(nèi)核進(jìn)行了深度優(yōu)化,增強(qiáng)了在性能,數(shù)據(jù)復(fù)制方面的能力,包括:
l 優(yōu)化線程池調(diào)度算法:啟用數(shù)據(jù)庫線程池能夠很好的提升在高并發(fā)、短事務(wù)場景下,數(shù)據(jù)庫整體吞吐量,并且能夠有效的控制數(shù)據(jù)庫內(nèi)部工作線程的數(shù)量,降低開銷。數(shù)據(jù)庫團(tuán)隊(duì)在此基礎(chǔ)上針對線程池的調(diào)度算法進(jìn)行了優(yōu)化,減少無謂的線程切換,減少請求在隊(duì)列中的等待時間,解決查詢和更新請求在線程組間分布不均衡等情況。負(fù)載越高,性能優(yōu)化效果越明顯,如下圖TDSQL與MySQL在英特爾?平臺進(jìn)行對比測試,隨著負(fù)載和CPU核數(shù)的增加,TDSQL的性能變化更接近于線性增長的趨勢,高負(fù)載情況下性能仍然能領(lǐng)先1.4倍并仍可繼續(xù)提升。
此次測試,英特爾?為騰訊云提供了英特爾? 至強(qiáng)? 可擴(kuò)展處理器、英特爾? 傲騰* 固態(tài)盤產(chǎn)品等先進(jìn)產(chǎn)品。依托這些先進(jìn)產(chǎn)品的優(yōu)秀表現(xiàn),在另一項(xiàng)針對數(shù)據(jù)庫讀寫性能的測評中,與上一代機(jī)型相比,英特爾? 至強(qiáng)? 可擴(kuò)展處理器與英特爾?傲騰* 固態(tài)盤產(chǎn)品使寫性能提高3倍,峰值達(dá)到了109萬TPS(Transactions Per Second,每秒事務(wù)數(shù)),讀性能提高4倍,峰值達(dá)到了286萬QPS(Queries Per Second,每秒查詢率)。
通過以上性能數(shù)據(jù)我們可以看出,TDSQL在高并發(fā)場景下的良好表現(xiàn),可以輕松支撐起億級用戶的訪問需求。而如果您追求兼容性,可選擇關(guān)系型數(shù)據(jù)庫(CDB )實(shí)例,如果您追求超高性能彈性擴(kuò)展可選擇分布式數(shù)據(jù)庫(DCDB)。當(dāng)前,基于TDSQL的騰訊金融云已在眾多金融領(lǐng)域關(guān)鍵業(yè)務(wù)場景獲得廣泛應(yīng)用,已成為國內(nèi)提供金融科技服務(wù)最重要的平臺之一。
附錄
實(shí)測的硬件/操作系統(tǒng)配置如下。
指標(biāo) | 型號 |
CPU | Intel(R) Xeon(R) Platinum 8164 CPU @ 2.00GHz 4*26 cores |
內(nèi)存 | 512G |
硬盤 | 英特爾?傲騰*固態(tài)盤 |
網(wǎng)卡 | 萬兆網(wǎng)卡 Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 |
OS | CentOS 7.3 ??3.10.0-514.21.2.el7.x86_64 |
性能測試工具及用例采用sysbench OLTP。相關(guān)命令行參數(shù)如下。
OLAP POINT SELECT
LD_PRELOAD=/usr/lib64/libjemalloc.so ./src/sysbench
–num-threads=1024 –test=./tests/include/oltp_legacy/oltp.lua –oltp-table-size=1000000
–oltp-dist-type=uniform –max-requests=0 –max-time=900
–mysql-socket=/root/prod/mysql.sock –mysql-user=root –mysql-password=123456
–mysql-db=sbtest –mysql-table-engine=INNODB –db-driver=mysql
–oltp-point-selects=1 –oltp-simple-ranges=0 –oltp-sum-ranges=0
–oltp-order-ranges=0 –oltp-distinct-ranges=0 –oltp-skip-trx=on
–oltp-read-only=on –oltp_tables_count=8 –percentile=99 –report-interval=1 run
OLTP RW
LD_PRELOAD=/usr/lib64/libjemalloc.so ./src/sysbench –num-threads=1024
–test=./tests/include/oltp_legacy/oltp.lua –oltp-table-size=1000000
–oltp-dist-type=uniform –max-requests=0 –max-time=900
–mysql-socket=/root/ prod/mysql.sock –mysql-user=root –mysql-password=123456
–mysql-db=sbtest –mysql-table-engine=INNODB
–db-driver=mysql –oltp-point-selects=1 –oltp-simple-ranges=0 –oltp-sum-ranges=0
–oltp-order-ranges=0 –oltp-distinct-ranges=0 –oltp-skip-trx=on –oltp-read-only=off
–oltp_tables_count=8 –oltp-index-updates=1 –oltp-non-index-updates=0
–percentile=99 –report-interval=1 run
強(qiáng)同步測試用例方案參考。相關(guān)命令行參數(shù)如下。
1,準(zhǔn)備100萬測試數(shù)據(jù),數(shù)據(jù)要求為有序流水?dāng)?shù)據(jù),有自增主鍵的表,如下表語句 create table cdat ( seq ? ? ? ? ? ? ? ???INT(20), id ? ? ? ? ? ? ? ? ? INT(20) not null AUTO_INCREMENT, primary key (id) ); 2,模擬2萬行/秒插入數(shù)據(jù),確保TDSQL強(qiáng)同步開啟,采用一主二從架構(gòu)。 3,插入數(shù)據(jù)過程中,模擬主機(jī)故障(如殺掉mysql進(jìn)程,或直接拔網(wǎng)線)。 3,切換備機(jī)后導(dǎo)出流水,自增主鍵與有序流水保持一致($1為自增序列,$2mysql自增主鍵),第一行的seq與插入順序強(qiáng)一致。 |