三款典型國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù)的對(duì)比評(píng)測(cè)
時(shí)間:2023-03-13 06:20:01 | 來(lái)源:電子商務(wù)
時(shí)間:2023-03-13 06:20:01 來(lái)源:電子商務(wù)
對(duì)于所有的應(yīng)用系統(tǒng),數(shù)據(jù)都是承載業(yè)務(wù)邏輯的核心資產(chǎn),而存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)系統(tǒng)則是最核心的系統(tǒng)之一。隨著國(guó)產(chǎn)化進(jìn)程的不斷推進(jìn),應(yīng)用系統(tǒng)基于國(guó)產(chǎn)化數(shù)據(jù)庫(kù)進(jìn)行構(gòu)建越來(lái)越重要,也越來(lái)越成為數(shù)據(jù)庫(kù)選型中的主流。
近幾年國(guó)產(chǎn)數(shù)據(jù)庫(kù)市場(chǎng)風(fēng)生水起,涌現(xiàn)了多款優(yōu)秀的國(guó)產(chǎn)數(shù)據(jù)庫(kù)產(chǎn)品,各大廠商也在重金投入數(shù)據(jù)庫(kù)研發(fā)中。本文選取了三款典型的國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù)進(jìn)行全方位對(duì)比壓測(cè),分析國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù)的發(fā)展現(xiàn)狀,供各位讀者參考。
測(cè)試環(huán)境及數(shù)據(jù)庫(kù)架構(gòu)
PolarDB-X環(huán)境 | 參數(shù) |
PolarDB-X版本 | polarx-kernel_5.4.11-16270254_xcluster-20210719 |
節(jié)點(diǎn)規(guī)格 | 16核64GB |
節(jié)點(diǎn)個(gè)數(shù) | 5個(gè) (CN 16核64GB + DN 16核64G) |
數(shù)據(jù)庫(kù)架構(gòu):Oceanbase
數(shù)據(jù)庫(kù)架構(gòu):TiDB
數(shù)據(jù)庫(kù)架構(gòu):壓測(cè)指標(biāo)分析
Sysbench壓測(cè)情況:1. 壓測(cè)參數(shù)配置
參數(shù) | 值 |
--rand-type | uniform |
--table-size | 1000,0000 |
--table-num | 16 |
--db-ps-mode | disable |
--auto-inc | false |
--range-size | 5 |
--skip-trx | off |
測(cè)試表結(jié)構(gòu):CREATE TABLE `sbtest1` ( `id` int(11) NOT NULL, `k` int(11) NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT'', PRIMARY KEY (`id`), KEY `k_1` (`k`)) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
2. 場(chǎng)景說(shuō)明
- 總計(jì)16 張表,每張表 1000 萬(wàn)行數(shù)據(jù),數(shù)據(jù)分布uniform。
- tidb場(chǎng)景:基于range水平拆分模式的分布式(tidb默認(rèn)會(huì)把所有表的數(shù)據(jù)按照range做自動(dòng)均衡,某一張測(cè)試表的數(shù)據(jù)會(huì)均勻分布到多個(gè)機(jī)器上)。
- OB模式:?jiǎn)伪砑垂倬W(wǎng)默認(rèn)推薦模式,sysbench腳本不作修改時(shí)自動(dòng)建立的表,這里簡(jiǎn)稱非分區(qū)表;基于hash水平拆分模式的分布式,簡(jiǎn)稱分區(qū)表。
- PolarDB-X場(chǎng)景:?jiǎn)伪?,sysbench腳本不作修改時(shí)自動(dòng)建立的表,這里簡(jiǎn)稱非分區(qū)表;基于hash水平拆分模式的分布式,簡(jiǎn)稱分區(qū)表,索引采用本地索引;基于hash水平拆分模式的分布式,簡(jiǎn)稱分區(qū)表,索引采用GSI全局索引。
3. 測(cè)試結(jié)果數(shù)據(jù)
TPCC (5000倉(cāng))
TPCC是專門針對(duì)聯(lián)機(jī)交易處理系統(tǒng)(OLTP系統(tǒng))的測(cè)試規(guī)范,一般情況下我們也把這類系統(tǒng)稱為在線業(yè)務(wù)處理系統(tǒng)。1992年7月發(fā)布,幾乎所有在OLTP市場(chǎng)提供軟硬平臺(tái)的國(guó)外主流廠商都發(fā)布了相應(yīng)的TPC-C測(cè)試結(jié)果,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,這些測(cè)試結(jié)果也在不斷刷新。
TPCC通常用于模擬測(cè)試復(fù)雜的在線事務(wù)處理系統(tǒng),在大壓力情況測(cè)試數(shù)據(jù)庫(kù)的事務(wù)處理能力,以下壓測(cè)匯總了三種分布式數(shù)據(jù)庫(kù)的最大tpmC指標(biāo):
// 數(shù)據(jù)導(dǎo)入 5000倉(cāng)tiup bench tpcc --warehouses 5000 -D tpcc -H xxx -P xxx -T threads_num prepare// 運(yùn)行tiup bench tpcc run -U root --db tpcc2 --host xxx --port xxx --time xxx --warehouses 5000 --threads
TPCH (100G)
TPCH(商業(yè)智能計(jì)算測(cè)試)是美國(guó)交易處理效能委員會(huì)(TPC,TransactionProcessing Performance Council) 組織制定的用來(lái)模擬決策支持類應(yīng)用的一個(gè)測(cè)試集。目前,在學(xué)術(shù)界和工業(yè)界普遍采用它來(lái)評(píng)價(jià)決策支持技術(shù)方面應(yīng)用的性能。
這種商業(yè)測(cè)試可以全方位評(píng)測(cè)系統(tǒng)的整體商業(yè)計(jì)算綜合能力,對(duì)廠商的要求更高,同時(shí)也具有普遍的商業(yè)實(shí)用意義,目前在銀行信貸分析和信用卡分析、電信運(yùn)營(yíng)分析、稅收分析、煙草行業(yè)決策分析中都有廣泛的應(yīng)用,以下以TPCH-100G來(lái)對(duì)比分析三種分布式數(shù)據(jù)庫(kù)的分析能力:
// 導(dǎo)入數(shù)據(jù) 100Gtiup bench tpch prepare --host xxx --port xxx --db tpch_100 --sf 100 --analyze --threads xxx// runtiup bench tpch run --host xxx --port xxx --db tpch_100 --sf 100 --check=true
DDL 能力1. 場(chǎng)景說(shuō)明
測(cè)試數(shù)據(jù)為tpch100g 生成的lineitem表,單表6億行數(shù)據(jù)
2. 并行DDL測(cè)試
并行DDL用于測(cè)試在達(dá)標(biāo)的DDL過(guò)沖中,在前一個(gè)DDL未完成時(shí),在同一張lineitem表下面加列、相同庫(kù)下創(chuàng)建一張表、給小表(如nation表)建立索引,觀察第二步是否能夠立即返回,若能立即返回,則表明支持并行DDL。
熱點(diǎn)行更新
對(duì)于有限的數(shù)據(jù)庫(kù)資源,如果有大量請(qǐng)求去消費(fèi)的話,肯定會(huì)產(chǎn)生大量的鎖競(jìng)爭(zhēng)(數(shù)據(jù)庫(kù)對(duì)一條數(shù)據(jù)的更新會(huì)導(dǎo)致在索引上給這條記錄加鎖),消耗服務(wù)器資源,而且請(qǐng)求的成功率也不高(換句話說(shuō)就是你在浪費(fèi)服務(wù)器資源,性價(jià)比不高);熱點(diǎn)行更新用來(lái)測(cè)試數(shù)據(jù)庫(kù)鎖控制能力和高并發(fā)大壓力下事務(wù)情況。
讀寫分離
場(chǎng)景介紹:一致性讀用于在只讀節(jié)點(diǎn)讀取數(shù)據(jù)的時(shí)候,是否可用控制讀的數(shù)據(jù)一致,包括強(qiáng)一致讀和弱一致讀;并且只讀節(jié)點(diǎn)延遲控制用于控制業(yè)務(wù)在讀取過(guò)程中,備庫(kù)最大支持多長(zhǎng)時(shí)間的延遲。
分區(qū)變更特性
場(chǎng)景介紹:分區(qū)規(guī)則變更用于驗(yàn)證數(shù)據(jù)庫(kù)的分布式調(diào)整能力,分區(qū)策略調(diào)整可以靈活適配線上表的業(yè)務(wù)場(chǎng)景,尤其從單表到分區(qū)表(分布式表),或者從單表到廣播表的場(chǎng)景。
特殊場(chǎng)景1. 大事務(wù)
測(cè)試數(shù)據(jù)為tpch100g 生成的lineitem表,單表6億行數(shù)據(jù)select * from lineitem; update lineitem set L_PARTKEY=L_PARTKEY+1;
測(cè)試結(jié)果:
2. Json類型
3. 單機(jī)表數(shù)量
單機(jī)表數(shù)量用于測(cè)試在復(fù)雜業(yè)務(wù)場(chǎng)景下,單機(jī)上可以存儲(chǔ)的最大表(分區(qū))的數(shù)量情況,驗(yàn)證數(shù)據(jù)庫(kù)的元數(shù)據(jù)管理能力,并且考察在單機(jī)支持更多表的情況下可以降低分布式的存儲(chǔ)成本。
4. drop大表影響
TiDB、OceanBase、PolarDB-X均可以平滑刪除,對(duì)在線業(yè)務(wù)無(wú)影響。
5. 應(yīng)急限流
場(chǎng)景介紹:應(yīng)急限流用于在線上緊急情況下,對(duì)部分爛SQL或者問(wèn)題SQL進(jìn)行緊急限流,保證大多數(shù)業(yè)務(wù)正常的情況下,限制部分爛SQL的運(yùn)行,可用于緊急線上恢復(fù)。
6. 資源隔離
場(chǎng)景介紹:用戶驗(yàn)證是否支持oltp和olap場(chǎng)景自動(dòng)資源隔離,olap通常需要大量的數(shù)據(jù)查詢分析資源,如果無(wú)法資源隔離有可能影響在線業(yè)務(wù)的使用和穩(wěn)定性。
7. 動(dòng)態(tài)索引綁定
場(chǎng)景介紹:用于測(cè)試執(zhí)行計(jì)劃綁定能力
測(cè)試結(jié)果分析
TiDB:1. 開啟了實(shí)驗(yàn)室特性(plan cache),不建議生產(chǎn)直接使用。生產(chǎn)環(huán)境默認(rèn)不開啟的話,point_select性能會(huì)有60%左右的性能下降,100核左右的資源點(diǎn)查場(chǎng)景只有36萬(wàn)QPS
2. sysbench測(cè)試場(chǎng)景中,會(huì)有比較大量的where id between xx and xx,但在實(shí)際業(yè)務(wù)中單純基于用戶id或者交易id的范圍查詢意義并不大,更多是在時(shí)間范圍的查詢。TiDB基于Range的分區(qū)策略,在between的分區(qū)裁剪可以做到只訪問(wèn)1個(gè)數(shù)據(jù)分片,而PolarDB-X和OceanBase基于Hash的策略會(huì)訪問(wèn)5個(gè)數(shù)據(jù)分片,因此TiDB的數(shù)據(jù)結(jié)構(gòu)會(huì)在sysbench單純指標(biāo)能力上占一定的優(yōu)勢(shì)。ps. 針對(duì)Range 和 Hash分區(qū)的性能差異,在PolarDB-X上基于read only場(chǎng)景下跑了下Range分區(qū)的對(duì)比測(cè)試,Range相比于Hash分區(qū)差不多有45%左右的性能提升(28萬(wàn) vs 19萬(wàn))
3. TPC-C場(chǎng)景下,整體劣勢(shì)比較明顯
4. TPC-H場(chǎng)景下,在tilfash模式下性能表現(xiàn)不錯(cuò),但在普通的tikv模式下,部分SQL跑不出結(jié)果
5. 特殊場(chǎng)景下,加索引的DDL性能有待提升,支持json但不建議生產(chǎn)使用,以及在熱點(diǎn)行更新下有明顯瓶頸
OceanBase:1. 非分區(qū)表(通常理解的單表),在OceanBase內(nèi)部會(huì)在分布式多個(gè)節(jié)點(diǎn)上做表級(jí)別的均衡,一張表的數(shù)據(jù)只在一個(gè)節(jié)點(diǎn),不同表可以在不同的節(jié)點(diǎn),在非分區(qū)表下比較考驗(yàn)純單機(jī)的能力。針對(duì)sysbench場(chǎng)景下的多張表在測(cè)試過(guò)程中是完全獨(dú)立的,這樣可以充分利用"多個(gè)單機(jī)"跑出一個(gè)更好的總吞吐值。這樣的模式下,相比于TiDB會(huì)有30%~70%的優(yōu)勢(shì),多個(gè)獨(dú)立的單表模式在真實(shí)業(yè)務(wù)場(chǎng)景中一般需要配合業(yè)務(wù)端的分庫(kù)分表。
2. 分區(qū)表,在OceanBase內(nèi)部支持將一張表的數(shù)據(jù)分布到多臺(tái)機(jī)器上,實(shí)現(xiàn)行級(jí)別的水平擴(kuò)展能力,在分區(qū)表下會(huì)存在分布式事務(wù)、分片聚合查詢等額外代價(jià),是最考驗(yàn)分布式能力的地方。分區(qū)表和 非分區(qū)表在sysbench的性能測(cè)試結(jié)果上,兩者的性能差異巨大。尤其在寫入和混合讀寫場(chǎng)景,分區(qū)表只有單表測(cè)試的1/5左右,分布式事務(wù)的性能還需要有進(jìn)一步的提升空間。
3. TPC-C場(chǎng)景下表現(xiàn)優(yōu)秀。在TPC-H場(chǎng)景下,通過(guò)并行計(jì)算+行存整體表現(xiàn)不錯(cuò)。
4. 特殊場(chǎng)景下,不支持json,以及在熱點(diǎn)行更新下有明顯瓶頸。
PolarDB-X:
1. 非分區(qū)表(通常理解的單表),PolarDB-X上支持通過(guò)locality模式將表分配到不同的節(jié)點(diǎn),一張表的數(shù)據(jù)只在一個(gè)節(jié)點(diǎn)上,比較考驗(yàn)純單機(jī)的能力。針對(duì)純讀和混合讀寫場(chǎng)景,相比于TiDB會(huì)有2~2.5倍的性能優(yōu)勢(shì)。
2. 分區(qū)表,在PolarDB-X內(nèi)部支持將一張表的數(shù)據(jù)分布到多臺(tái)機(jī)器上,實(shí)現(xiàn)方式和TiDB、OceanBase分布式表基本一致,在write only上整體性能會(huì)比TiDB好一些;在最常見(jiàn)的業(yè)務(wù)場(chǎng)景read write下,分區(qū)表和單機(jī)表性能都比OB要好很多,非分區(qū)表比TIDB有明顯的性能優(yōu)勢(shì),分區(qū)表跟tidb基本保持一致
3. TPC-C場(chǎng)景下表現(xiàn)優(yōu)秀。在TPC-H場(chǎng)景下,通過(guò)并行計(jì)算+行存整體表現(xiàn)不錯(cuò)
4. 特殊場(chǎng)景下,快速加列DDL需要優(yōu)化,支持json,以及針對(duì)熱點(diǎn)更新的優(yōu)化明顯。
polardb-x對(duì)分區(qū)規(guī)則變更支持最好,基本支持所有常見(jiàn)的分區(qū)變更策略
總結(jié)
1. PolarDB-X/OceanBase/TiDB在分布式水平擴(kuò)展的性能上大同小異,區(qū)分度并不大。
2. TiDB有一些不錯(cuò)的實(shí)驗(yàn)性質(zhì)的功能(比如plan cache、json),對(duì)性能和功能易用性幫助比較大,但眼下生產(chǎn)不推薦使用。
3. OceanBase的模型比較復(fù)雜,測(cè)試場(chǎng)景需要充分理解分區(qū)表和 非分區(qū)表(單表)。在非分區(qū)表(單表)模式下,性能表現(xiàn)不錯(cuò),重點(diǎn)考察的是純單機(jī)能力,性能尚可,略低于MySQL。但分區(qū)表模式下,性能下降比較多,需要業(yè)務(wù)區(qū)分來(lái)看。
4. PolarDB-X功能性和易用性比較不錯(cuò),json、大事務(wù)、熱點(diǎn)更新支持比較完整。在非分區(qū)表(單表)模式下,純MySQL單機(jī)的能力表現(xiàn)突出,在分區(qū)表模式下,可以通過(guò)分布式能力進(jìn)一步擴(kuò)展性能,對(duì)分區(qū)表的變更策略支持最完善。(完)
原文鏈接本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
關(guān)鍵詞:對(duì)比,數(shù)據(jù),典型,國(guó)產(chǎn),分布