云原生數(shù)據(jù)倉庫ByteHouse性能白皮書(企業(yè)版)_第1頁
云原生數(shù)據(jù)倉庫ByteHouse性能白皮書(企業(yè)版)_第2頁
云原生數(shù)據(jù)倉庫ByteHouse性能白皮書(企業(yè)版)_第3頁
云原生數(shù)據(jù)倉庫ByteHouse性能白皮書(企業(yè)版)_第4頁
云原生數(shù)據(jù)倉庫ByteHouse性能白皮書(企業(yè)版)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

目錄CONTENTS在數(shù)據(jù)處理和分析的領(lǐng)域,提升查詢效率始終是一項關(guān)鍵挑戰(zhàn)。在OLAP領(lǐng)域,性能的關(guān)鍵需求在于能夠快速進行數(shù)據(jù)檢索,支持實時分析,具備處理大規(guī)模數(shù)據(jù)的能力,輕松應(yīng)對復(fù)雜查詢,提供快速響應(yīng),具備良好的可擴展性,高效處理并發(fā)操作,以及實現(xiàn)高效的數(shù)據(jù)壓縮和存儲。這些方面對于滿足高效、準確的數(shù)據(jù)分析它全面繼承了開源ClickHouse的高性能和強大的分析能力,并在架構(gòu)上遵循新一代云原生理念進行全面重構(gòu),實現(xiàn)了容器化、存儲計算分離、多租戶管理和讀寫分離等功能。在可擴展性、穩(wěn)定性、可運維性、性能以及資源利用率等方面都有顯著提升。截至2022年2月,ByteHouse在字節(jié)跳動內(nèi)部的部署規(guī)模超過18000臺,單集群超過2400臺。它經(jīng)過了內(nèi)部數(shù)百個應(yīng)用場景和數(shù)萬用戶的錘煉,并在多個外部企業(yè)客戶中得到了廣泛本文將介紹ByteHouse企業(yè)版的一系列優(yōu)化措施。這些改進旨在縮短查詢執(zhí)行時間、優(yōu)化資源利用,提供更流暢的數(shù)據(jù)分析體驗。通過智能優(yōu)化算法和先進的執(zhí)行技為了讓大家親身感受這些優(yōu)化帶來的效果,我們提供了的性能測試步驟。您可以按照這些步驟進行測試,親自驗證ByteHouse企業(yè)版在查詢效率方面的顯著提升。1.2CDC(ChangeDataCapture)011.3Upsert&部分列更新023.2Zerocopy優(yōu)化063.4UncompressedCache優(yōu)化074.1BitEngine/BitMap07行為分析08Vector向量檢索GIS時空分析SSB性能測試TPC-H性能測試TPC-DS性能測試6464 Kafka&Kafka&FlinkHaKafkaHaKafka:更穩(wěn)定的高可用Kafka消費引擎ByteHouse的HaKafkaEngine是一款自研表引擎,在數(shù)據(jù)實時消費性能不降級的基礎(chǔ)上解決了Kafka消費的高可用問題,提供了low-level消費模式,保證了At-least-once消費語義。用戶可以通過ByteHouse控制臺可視化創(chuàng)建實時導(dǎo)入任務(wù)。FlinkConnectorFlinkConnectorFlinkConnectorforByteHouse連接器專用于通過Flink將數(shù)據(jù)加載到ByteHouse,目前FlinkConnector已經(jīng)支持通過TableAPI&SQL和FlinkDataStreamAPI兩種方式來連接ByteHouse并處理數(shù)據(jù),詳情請參見產(chǎn)品手冊(/docs/6464/1198033)。CDCCDC(ChangeDataCapture)實時數(shù)據(jù)同步數(shù)據(jù)快車服務(wù)(DES,DataExpressService)是一個用于將多源異構(gòu)數(shù)據(jù)源和數(shù)據(jù)結(jié)構(gòu)導(dǎo)入到ByteHouse的服務(wù),通過提供數(shù)據(jù)集成、結(jié)構(gòu)映射、高效導(dǎo)入、安全可靠等功能,幫助用戶快速、準確地將各種類型的數(shù)據(jù)(如關(guān)系型數(shù)據(jù)庫、日志文件、對象存儲等)導(dǎo)入到ByteHouse中進行后續(xù)的處理使用DES可實現(xiàn)數(shù)據(jù)秒級同步到目標端,用戶可以根據(jù)業(yè)務(wù)需求選擇不同規(guī)格的獨享資源以享受更高性能的同步體驗,同步性能可達到25萬records/s以上,詳情請參見產(chǎn)品手冊。目前,數(shù)據(jù)快車的CDC同步任務(wù)已支持MySQL/PostgreSQL數(shù)據(jù)源的歷史或增量數(shù)據(jù)同步。為了強化實時數(shù)倉的能力,便于將為了強化實時數(shù)倉的能力,便于將MySQL中的表映射到ByteHouse企業(yè)版中,ByteHouse引入了MaterializedMySQL數(shù)據(jù)庫引擎,ByteHouse服務(wù)作為MySQL副本,可以讀取Binlog并執(zhí)行DDL和DML請求,實現(xiàn)了基于MySQLBinlog機制的業(yè)務(wù)數(shù)據(jù)庫實時同步功能。ByteHouse企業(yè)版在實現(xiàn)MaterializedMySQL時,底層引擎采用了自研的HaUniqueMergeTree引擎,增強了MaterializedMySQL引擎的穩(wěn)定性和易用性。 內(nèi)置MaterializedMySQL引擎UpsertUpsert&部分列更新解決了社區(qū)版查詢時去重的效率問題,可以幫助業(yè)務(wù)更輕松地開發(fā)實時分析應(yīng)用。同時,在ByteHouse中,我們可以在HaUniqueMergeTree表中實現(xiàn)部分列更新的功能。部分列更新模式在指定變量enable_unique_partial_update=1后,允許以部分列更新的模式進行寫入。--以部分列更新的模式進行寫入,并主動制定更新列示例SETenable_unique_partial_update=1;--主動指定_update_columns_INSERTINTOt1(k,c1,m1,a1,_update_columns_)VALUES(1,20,{,k2,:2},[,world,],,k,廠—k—丁—c1—丁———c2—丁—c3———丁———c4—丁—m1———————丁—a1————————口____」」」」」」 」數(shù)據(jù)庫優(yōu)化器是DBMS中一個核心組件,它負責(zé)分析查詢語句,并根據(jù)表的結(jié)構(gòu)、索引等信息來生成最優(yōu)的執(zhí)行計劃。通過優(yōu)化查詢執(zhí)行計劃,可以提高查詢的執(zhí)行效率,減少資源消耗,提升系統(tǒng)性能。為了提升在復(fù)雜場景的查詢性能,ByteHouse的自研優(yōu)化器進行了大量的優(yōu)化,主要包括四個大的優(yōu)化方向:優(yōu)化器實現(xiàn)了常見的優(yōu)化規(guī)則。例如列裁剪、分區(qū)裁剪、表達式簡化、子查詢解關(guān)優(yōu)化器實現(xiàn)了常見的優(yōu)化規(guī)則。例如列裁剪、分區(qū)裁剪、表達式簡化、子查詢解關(guān)聯(lián)、謂詞下推、冗余算子消除、Outer-JOIN轉(zhuǎn)INNER-JOIN、算子下推存儲、分布式算子拆分等常見的啟發(fā)式優(yōu)化能力。解關(guān)聯(lián)很多OLAP引擎不支持相關(guān)子查詢,在語法分析階段就會報錯。優(yōu)化器實現(xiàn)了完整的解關(guān)聯(lián)能力,對于關(guān)聯(lián)查詢可以轉(zhuǎn)換為常見的joinaggfilter等算子執(zhí)行,下圖就是一個簡單的解關(guān)聯(lián)例子。對于一些特殊類型的關(guān)聯(lián)查詢也可以利用window算子執(zhí)行,更加快速簡潔。0102SELECTcount(c_custkey)FROMcustomerWHERESELECTcount(c_custkey)FROMcustomerWHERE10000<(SELECTSUM(o_totalprice)FROMordersWHEREocustkey=c_custkey);FilterNodeSUM(o_totalprice)>10000JoinNodeJoinKind:INNERJoinStrictness:AllJoinKeysc_custkey=o_custkeyJoinFilter1HasUsing:0GreaterOrEqualsReadFromStorageNodeDatabase:tpchTable;customerProjectionNodeAssignments:count(c_custkey):‘count(c_custkey)AggrcgatingNodeGroupBy:Functions:count(c_custkey)AggregatingNodeGrupBy:o_custkeyFunctions;SUM(o_totalprice)ProjectionNodeAssignments:o_totalprice:o_totalpriceo_custkey:o_custkeybuildsidenonnullsymbol:1Ulnt8ReadFromStorageNodeDatabase:tpchTable:orders非等值非等值Join優(yōu)化在很多引擎中,帶有非等值條件的join需要通過多個算子來組合執(zhí)行(innerjoin+filter+group-by),而在ByteHouse中,支持非等值join之后可以直接在join算子中完成非等值條件的執(zhí)行。優(yōu)化器會對一些關(guān)聯(lián)子查詢轉(zhuǎn)成非等值join來執(zhí)行,相較于轉(zhuǎn)成其他常見的算子(innerjoin,filter,agg)性能有一倍以上的提升?;诨贑ascade搜索框架,利用GraphPartition技術(shù)實現(xiàn)了高效的Join枚舉算法,以及基于HistogramJoinReorder對10表級別規(guī)模的JoinReorder問題,能夠全量枚舉并尋求最優(yōu)解,同時針對大于10表規(guī)模的JoinReorder支持啟發(fā)式枚舉并尋求最優(yōu)解。CBO支持基于規(guī)則擴展搜索空間,除了常見的JoinReorder問題以外,還支持Outer/Semi/Anti-Join的Reorder。03業(yè)界主流實現(xiàn)分為兩個階段,首先尋求最優(yōu)的單機版計劃,然后將其分布式化。但是這樣的設(shè)計流程,不能提前考慮分布式系統(tǒng)的特點,可能會導(dǎo)致網(wǎng)絡(luò)延遲、數(shù)據(jù)分布不均衡,并導(dǎo)致可擴展性限制等問題。從代價的角度選擇最優(yōu)的分布式計劃。同時在Join/Aggregate過程中,也支持Partition屬性展開。另外,我們也在CBO中實現(xiàn)了對于Aggregate/JoinReorder,MagicSetPlacement等相關(guān)能力。對于CTE的實現(xiàn)方式也基于Cost進行選擇,在inline,shared和partialinline之間做權(quán)衡,選出最優(yōu)的計劃。在tpcds等benchmark中都有一定的應(yīng)用。ExchangeExchange在執(zhí)行層中,數(shù)據(jù)的傳入和傳出依賴于Exchange模塊。Exchange是數(shù)據(jù)在PlanSegment實例之間進行數(shù)據(jù)交換的邏輯概念。在具體實現(xiàn)上,我們將其分為數(shù)據(jù)傳輸層和算子層。數(shù)據(jù)傳輸層主要基于定義的Receiver/Sender接口,同進程傳輸基于隊列,跨進程基于BRPCStream,支持保序、狀態(tài)碼傳輸、壓縮和連接池復(fù)用。簡單來說,就是在大所有查詢都在這個連接上通信。由于我們使用連接池,實際上兩個節(jié)點之間是固定數(shù)量的連接,這樣穩(wěn)定性更高。算子層支持四種場景:一對多的Broadcast、多對多的Repartition、多對一的Gather,以及本進程之間的Round-Robin。ByteHouse中另外還做了一些優(yōu)化,包括避免Broadcast重復(fù)序列化、提升Repartition性能以及sink攢批。在大集群下,通過一個ExchangeSource讀取多個receiver的數(shù)據(jù)來降低線程數(shù)。04ProcessorsModuleIQueryPlanStepRemoteExchangeSourceStepRemoteBroadcastAPIBRPCProcessorsModuleIQueryPlanStepRemoteExchangeSourceStepRemoteBroadcastAPIBRPCBroadcastLocalBroadcastQueryPlanQueryPipelineDataTransportLayerIProcessorBufferedCopyTransformRepartitionTransformTransformerExchangeSourceIProcessorBufferedCopyTransformRepartitionTransformTransformerExchangeSourceExchangeSinkSinglePartitionExchangeSinkBroSinglePartitionExchangeSinkBroadcastExchangeSinkMultiPartitionExchangeSinkMultiPartitionExchangeSinkLoadBalancedExchangeSinkRuntimeFilterRuntimeFilter優(yōu)化在OLAP場景中,Join是一個十分常見的操作,也是查詢的性能瓶頸。RuntimeFilter是在Join的Probe端提前過濾掉那些不會命中Join的數(shù)據(jù),減少存儲掃描、網(wǎng)絡(luò)傳輸和算子計算的數(shù)據(jù),是優(yōu)化復(fù)雜查詢的重要手段之一。TableScan(withRuntimeFilter)RuntimeFilterBuilderRuntimeFilterBuilder提前過濾FilterProbeTableScanTableScanTableScanRuntimeFilterFilterJoinJoin05RuntimeFilter也稱為DynamicFilter,是一種在執(zhí)行引擎中動態(tài)構(gòu)建Filter的能力。它的目的是通過在Join的Probe端提前過濾掉那些不會命中Join的輸入數(shù)據(jù),來大幅減少Join中的數(shù)據(jù)傳輸和計算,從而減少整體的執(zhí)行時間。例如在HashJoin的過程中,當右表HashTable構(gòu)建完成后,將根據(jù)JoinKey+HashTable生成RuntimeFilter,并將其作用于左表的Scan節(jié)點,從而減少左表的掃描數(shù)據(jù)量,可進一步減少磁盤IO、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)?,最終使得Query的性能顯著提高。ByteHouse支持根據(jù)不同的場景生成最優(yōu)的RuntimeFilter,優(yōu)化了生成和Apply的流程,同時支持Distributed和Local的RuntimeFilter,在較大規(guī)模集群上也自適應(yīng)的支持Shuffle-Aware的RuntimeFilter。ClickHouseClickHouse內(nèi)部的并行執(zhí)行在Agg和Join上存在一些性能瓶頸,主要表現(xiàn)在不能很好地結(jié)合數(shù)據(jù)上下游的數(shù)據(jù)特征,以及在中間執(zhí)行過程中引入了不必要的FinalMerge和數(shù)據(jù)Shuffle。在此基礎(chǔ)上,ByteHouse對ClickHouse進行了并行化重構(gòu),支持AggregationStreaming并結(jié)合HashTableTwo-Level的并行和數(shù)據(jù)的分布特征,有效減少了中間出現(xiàn)的AggFinalMerge和ConcurrentHashJoin中的數(shù)據(jù)Shuffle,從而顯著提升了整體Query的執(zhí)行性能。 并行化重構(gòu)+Bucket表物化視圖存儲了SQL查詢語句包含的數(shù)據(jù),并提供更新機制。物化視圖最重要的功能就是查詢加速。用查詢物化視圖來替代直接查詢數(shù)據(jù)表,可以避免對數(shù)據(jù)進行再次的計算與聚合,能夠以空間換時間的方式節(jié)省查詢時間,達到查詢加速和簡化查詢邏輯的目的。數(shù)據(jù)倉庫中存在大量在大型表上執(zhí)行復(fù)雜的查詢,并會消耗大量資源和時間。物化視圖可以通過預(yù)計算的結(jié)果回答查詢,消除昂貴的Join和聚合計算所帶來的開銷,大幅度改善查詢處理時間,降低系統(tǒng)負載。對于可以預(yù)見并反復(fù)使用相同子查詢結(jié)果的查詢,物化視圖非常高效。06ProjectionProjection是按照ByteHouse的存算分離架構(gòu)進行設(shè)計的,Projecton數(shù)據(jù)由分布式存儲統(tǒng)一進行管理,而針對projection的查詢和計算則在無狀態(tài)的計算節(jié)點上進行。相比于社區(qū)版,ByteHouseProjection●對于Projection數(shù)據(jù)的存儲節(jié)點和計算節(jié)點可以獨立擴展,即可以根據(jù)不同業(yè)務(wù)對于Projection的使用需求,增加存儲或者計算節(jié)點。●當進行Projection查詢時,可以根據(jù)不同Projection的數(shù)據(jù)查詢量來分配計算節(jié)點的資源,從而實現(xiàn)資源的隔離和優(yōu)化,提高查詢效率?!馪rojection的元數(shù)據(jù)存儲十分輕量,在業(yè)務(wù)數(shù)據(jù)急劇變化的時候,計算節(jié)點可以做到業(yè)務(wù)無感知擴縮容,無需額外的Projection數(shù)據(jù)遷移。ProjectionZeroZerocopy優(yōu)化Zerocopy是一種優(yōu)化技術(shù),用于在數(shù)據(jù)傳輸過程中減少數(shù)據(jù)的拷貝次數(shù),從而提高數(shù)據(jù)傳輸?shù)男屎托阅堋erocopy可以避免原來前期需要的大量deepcopy操作。在減少deepcopy降低查詢計算overhead的同時,也可以避免內(nèi)存IO吞吐過早達到內(nèi)存IO帶寬上限,從而緩解高并發(fā)下內(nèi)存IO吞吐帶寬瓶頸帶來的問題。全局字典以全局字典編碼的方式進行數(shù)據(jù)的讀寫計算,針對Agg、Function和Exchange實現(xiàn)了基于編碼值的處理,將基于非定長字符串類型的計算改變?yōu)榛诙ㄩL整型編碼值的計算,以此提升計算效率。UncompressedCacheUncompressedCache優(yōu)化UncompressedCache優(yōu)化提高了多線程下cache訪問的效率。社區(qū)OLAP多個cache模塊使用LRUcache,在多線程并發(fā)場景中存在鎖競爭激烈,影響cache效率的情況。而UncompressedCache優(yōu)化解決了這一問題,提高了系統(tǒng)的性能和響應(yīng)能力。BitEngine/BitMapBitEngine/BitMapBitEngine是一個高效集合數(shù)據(jù)處理模型,它是查詢分析數(shù)據(jù)庫ClickHouse的一部分。BitEngine底層基于MergeTreeFamily存儲引擎,并在此基礎(chǔ)上引入了BitMap64類型,開發(fā)了系列相關(guān)運算函數(shù)。BitEngine提供的BitMap64類型適合表達具有特定關(guān)系的大量實體ID的集合,將集合的交并補運算轉(zhuǎn)化為bitmap之間的交并補運算,從而達到遠超普通查詢的性能指標。已上線業(yè)務(wù)的測試表明,使用BitEngine相比普通和Array或者用戶表方式,在查詢速度上有10-50倍不等的提升,詳情可參見官方文檔(/docs/6464/1172136)。BitMap索引(BitMapindex)目前用于Array+Int8/16/32/64/StringUInt/8/16/32/64/String類型,它為Array數(shù)組中每個元素構(gòu)建一個bitmap-index,在查詢的時候,我們使用arraySetCheck(column,(item))檢測item是否在數(shù)組里的時候會使用bitmap-index做過濾,從而避免大量的array數(shù)據(jù)讀取,目前大部分Array類型的過濾操作都使用了bitmap-index,性能有4-10倍不等的提升。人群圈選分析是客戶畫像平臺(CDP)中的核心功能。分析師利用各種標簽組合,挑選出最合適的人群,進而進行廣告推送,達到精準投放的效果。同時由于人群查詢在不同標簽組合下的結(jié)果集大小不同,在一次廣告投放中,分析師需要經(jīng)過多次的邏輯調(diào)整,以獲得"更合適"的人群包。在這種高頻的操作下,畫像平臺通常會遇到兩方面的問題:●第一,由于此類查詢分析是臨時性的,各種標簽組合數(shù)巨大,離線預(yù)計算無法滿足此類靈活性。第二,由于此類查詢是實時場景,查詢性能變得非常關(guān)鍵,通常一次查詢在分鐘級,耗時較長,無法滿足分析師需求。10s,展現(xiàn)了優(yōu)異的性能。隨著經(jīng)營成本的大幅增加,企業(yè)必須改變過去粗放型的營銷與運營方式,尤其是在產(chǎn)品制造、銷售,市場營銷以及客戶服務(wù)等各個方面都需要向更加科學(xué)、高效的方向轉(zhuǎn)變。行為分析是數(shù)字化營銷中非常重要的一個指標。以電商業(yè)務(wù)的用戶運營為例,通常需要整合各類業(yè)務(wù)數(shù)據(jù),按照用戶粒度進行數(shù)據(jù)加工,并形成結(jié)構(gòu)化的數(shù)據(jù),繼而進行標簽計算,以便能夠精準描繪畫像特征。ByteHouse根據(jù)用戶行為分析使用場景,定制了部分函數(shù),包括留存分析類函數(shù)genArrayIf()/retention2()、路徑分析類函數(shù)pathSplit()/pathCount(),以及漏斗分析函數(shù)finderFunnel()/funnelRep()等。漏斗分析和留存分析是常用的轉(zhuǎn)化分析方法,在用戶行為分析和App數(shù)據(jù)分析的流量分析、產(chǎn)品目標轉(zhuǎn)化等數(shù)據(jù)運營和分析中得到廣泛應(yīng)用,使用這些函數(shù)相比拼裝SQL或者ClickHouse原生函數(shù)更為高效。留存分析函數(shù)通常用于分析用戶在一段時間內(nèi)的留存情況。這些函數(shù)可以幫助我們了解用戶在特定時間段后是否仍然活躍或繼續(xù)使用產(chǎn)品或服務(wù)。通過對留存率數(shù)據(jù)分析數(shù)據(jù),可以識別用戶行為模式,并通過持續(xù)不斷的優(yōu)化產(chǎn)品和數(shù)據(jù)監(jiān)測,可以提高用戶滿意度和忠誠度,增加留存率。/07082周后3周后4周后5周后6周后7周后8周后9周后43%44.9%45.8%首次使用時間留存用戶新增用戶留存率09-20-09-2609-27-10-0310-25-10-3109-13-09-1910-04-10-1010-18-10-2443%漏斗模型是一種常見的分析方法,用于描述一個過程中各個階段的轉(zhuǎn)化情況,就像一個漏斗一樣,數(shù)據(jù)從寬口進入,逐漸縮小,最終到達窄口。ByteHouse中的漏斗函數(shù)主要用于統(tǒng)計用戶在不同階段的轉(zhuǎn)化率和轉(zhuǎn)化路徑。它可以根據(jù)用戶的行為數(shù)據(jù),分析用戶的每一步操作,并將其分為不同的階段。根據(jù)不同的條件,例如訪問量、點擊量、注冊量等,計算每個階段的轉(zhuǎn)化率,并顯示出用戶在整個轉(zhuǎn)化路徑上的例如,在一些業(yè)務(wù)場景中,需要選定一段時間范圍,觀察此時間范圍內(nèi)每一個時間單位(天)內(nèi)用戶按一定時間范圍劃分的漏斗分層匯總情況。訪問訪問激活注冊活躍交易目前,通過使用ByteHouse作為查詢加速引擎,幫助行為分析系統(tǒng)接入了字節(jié)跳動內(nèi)部幾乎所有的產(chǎn)品線。業(yè)務(wù)上,在滿足了高效查詢性能的同時,擴展了時間分析的范圍與事件埋點的數(shù)量。讓分析用戶能夠在海量數(shù)據(jù)的情況下,依然可以靈活地進行交互式分析,洞察事件行為背后的原因。DAU:4000+OLAP高并發(fā)場景指的是在在線分析處理(OnlineAnalyticalProcessing)環(huán)境中,有大量用戶同時進行數(shù)據(jù)分析操作的情況。在這種場景下,系統(tǒng)需要處理多個并發(fā)請求,以滿足用戶對快速數(shù)據(jù)查詢和分析的需求。比如,在部分在線服務(wù)的分析場景下(如游戲日志檢索,用戶信息檢索等),需要給多個分析師提供相似SQLPattern的查詢服務(wù)。通常此類查詢性能要求極高,需要有10000以上、可線性擴展的業(yè)內(nèi)主流OLAP引擎在高并發(fā)能力上表現(xiàn)不佳,通常需要借助行存引擎去支持高并發(fā)點查場景,但是對建模和運維管理都帶來了很多額外工作量。ByteHouse針對性做了很多增強,在純列存模式上極大提升廣告推薦業(yè)務(wù)上,僅僅256Core的算力,即可支持10萬+QPS。Vector向量檢索向量是一種常見的非結(jié)構(gòu)化數(shù)據(jù)表現(xiàn)形式。基于向量相似度的KNN計算廣泛使用于圖像搜索、多模態(tài)搜索、推薦、大模型推理等場景。ByteHouse企業(yè)版已提供向量數(shù)據(jù)的管理與近似度查詢功能,同時通過支持多種常見近近似最近鄰搜索算法(ApproximateNearestNeighbor,ANN)算法來提升檢索性能,以提供對非結(jié)構(gòu)化數(shù)據(jù)的處理能力。ByteHouse企業(yè)版當前支持HNSW(hnswlib)、Faiss兩個算法庫,后續(xù)還會對DiskANN等算法庫提供HNSWHNSW索引(HierarchicalNavigableSmallWorldgraphs,分層-可導(dǎo)航-小世界-圖)熱門的基于圖的近似最近鄰搜索算法(ANN)。HNSW是一種非常流行和強大的算法,具有超快的搜索速度和出色的召回率。FaissFaissFacebook開源的ANN算法庫,包含了倒排(IVF,InvertedFile)、PQ、SQ等多種類型的索引,以減少索引的內(nèi)存使用。0910Seriallatency_p99(lessisSeriallatency_p99(lessisbetter)Milvus5.4msByteHouse-HNSWSearchPerformanceTest(1MDataset,768Dim)Qps(moreisbetter)ByteHouse-HNSWRecall(moreisbetter)ByteHouse-HNSWMilvusLoadduration(lessisbetter)ByteHouse-HNSWMilvus表:Vector大模型向量檢索核心應(yīng)用場景廣泛應(yīng)用場景應(yīng)用場景互聯(lián)網(wǎng)互聯(lián)網(wǎng)-電商商品以圖搜搜互聯(lián)網(wǎng)-社交互聯(lián)網(wǎng)-社交圖像去重、視頻原創(chuàng)驗證、風(fēng)控審核、關(guān)聯(lián)推薦、輿情監(jiān)控政府機構(gòu)政府機構(gòu)人臉識別、視頻檢索、指紋搜索、人體圖像檢索、車輛查找、內(nèi)容查重人臉識別、文本檢索、智能客服人臉識別、商品識別、自動售貨機基于業(yè)界最新的VectorDBBench測試工具進行測試,在cohere1M標準測試數(shù)據(jù)集上、recall98的情況下,ByteHouse可以達到與專用向量數(shù)據(jù)庫(以專用向量數(shù)據(jù)庫Milvus為例)同等水平的性能。在數(shù)字化時代,地理空間分析(GeospatialAnalytics)成為輔助企業(yè)市場策略洞察的重要手段。無論是精準廣告投放,還是電商物流的效率優(yōu)化,都離不開對地理空間數(shù)據(jù)的查詢、分析和可視化處理,以便助力企業(yè)更好決策。ByteHouse的GIS功能不僅提供了高性能的地理空間分析能力,還具有易于使用、實時分析和云原生等特點。這使得企業(yè)可以更靈活、更高效地利用地理空間數(shù)據(jù),從而在激烈的市場競爭中獲得優(yōu)勢。在關(guān)鍵性能層面,ByteHouseGIS在列式小批組織的數(shù)據(jù)結(jié)構(gòu)上引入RTree等二維空間索引能力,并在CPU硬件層面實現(xiàn)了二維空間函數(shù)的性能優(yōu)化,整體提升了端到端性能。在功能層面,兼容OGC標準,支持導(dǎo)入標準GIS文件格式,目前已支持超過50個主流的空間函數(shù)。位置洞察:通過高性能GIS(ST_DistanceSphere)函數(shù),企業(yè)可以快速獲取指定范圍內(nèi)的相關(guān)信息,為定價策略和市場定位提供數(shù)據(jù)支持。作戰(zhàn)地圖:利用GIS(ST_Within)函數(shù),企業(yè)可以實時觀察特定區(qū)域內(nèi)的商家供給和客流量,為即時零售業(yè)務(wù)的配送優(yōu)化提供決策依據(jù)。為了說明性能效果,我們基于兩個關(guān)鍵的GIS函數(shù):ST_DistanceSphere和ST_Within;并使用NYCManhattan選取其中3個不同大小的地理區(qū)域(按照過濾度區(qū)分:zone1、zone2、zone3將ByteHouse與ClickHouse、PostGIS、DuckDB等常見數(shù)據(jù)庫進行了性能對比?;跇藴蕯?shù)據(jù)集的測試結(jié)果來看,ByteHouseGIS對比傳統(tǒng)的PostGIS:在OLAP層面,ByteHouse在GIS層面,空間數(shù)據(jù)對象按照列的方式存儲,而非序列化成字節(jié)數(shù)組,在存儲上能夠做到更加緊湊并節(jié)省空間,在計算上能夠充分發(fā)揮向量化的優(yōu)勢。在空間函數(shù)層面,可以利用硬件的并行化能力提速。ByteHouseByteHouseGIS對比社區(qū)ClickHouse:ByteHouseGIS兼容OGC標準,能夠水平替換之前PostGIS的場景??臻g索引能力可以大大減少ClickHouse的讀放大的現(xiàn)象。ByteHouse自研的優(yōu)化器同樣具備適配GIS特性的能力。STST_Within函數(shù)性能對比ST_DistanceSphere函數(shù)性能對比某汽車內(nèi)容平臺借助ByteHouse的GIS時空分析功能,幫助用戶在選擇店址時快速評估商某汽車品牌使用該平臺的建店選址產(chǎn)品,可以快速了解該城市的人口分布、消費水平、競爭對手等信息,從而選擇最合適的店址,提高開店成功率。/13 SSB、TPC-H和TPC-DS都是常用于測試分析型數(shù)據(jù)庫/數(shù)據(jù)倉庫的數(shù)據(jù)集。這些數(shù)據(jù)集被廣泛應(yīng)用于數(shù)據(jù)倉庫領(lǐng)域,并且包含了常見的業(yè)務(wù)場景和數(shù)據(jù)模式。通過測試這些數(shù)據(jù)集,可以全面評估數(shù)倉在處理復(fù)雜數(shù)據(jù)結(jié)構(gòu)和查詢操作時的性能和效率。SSB:StarSchemaBenchmark是一種在學(xué)術(shù)界和工業(yè)界廣泛應(yīng)用的數(shù)據(jù)庫系統(tǒng)性能評估基準測試方法。它能夠?qū)Ρ炔煌瑪?shù)據(jù)倉庫在處理星型模式查詢時的性能,幫助數(shù)據(jù)庫管理員和決策者選擇最符合需求的數(shù)據(jù)庫系統(tǒng)。此外,參考OLAP行業(yè)的做法,將SSB中的星型模型展平轉(zhuǎn)化為寬表,還可以改造成單一表測試Benchmark(SSBflat)。TPC-H:TPC-H作為一種決策支持基準,被廣泛應(yīng)用于學(xué)術(shù)界和工業(yè)界,用于評估決策支持技術(shù)應(yīng)用的性能。它以真實的生產(chǎn)運行環(huán)境為基礎(chǔ)進行建模,模擬了一個包含8張表的銷售系統(tǒng)數(shù)據(jù)倉庫。其選擇的查詢和填充數(shù)據(jù)庫的數(shù)據(jù)具有廣泛的行業(yè)相關(guān)性,同時具備足夠的易實現(xiàn)性。TPC-DS:TPC-DS由TPC委員會制定并發(fā)布,是一種面向決策支持系統(tǒng)的、涵蓋多維度常規(guī)應(yīng)用模型的決策支持基準,包括查詢和數(shù)據(jù)維護。該基準對被測系統(tǒng)在決策支持系統(tǒng)層面的表現(xiàn)評估具有代表性。TPC-DS查詢包含共計99個測試語句。以下內(nèi)容將以性能著稱的某開源OLAPC*為基準產(chǎn)品,通過SSB、TPC-H和TPC-DS三種數(shù)據(jù)集,展示ByteHouse的性能效果。您可以按照這些數(shù)據(jù)集的測試步驟進行測試,驗證ByteHouse在查詢效率方面的顯著提升。14SSB性能測試SSB寬表測試的13個查詢中,ByteHouse查詢性能全面超越開源產(chǎn)品C*,整體查詢性能達到該產(chǎn)品的3.6+倍。SSB標準測試的13個查詢中,開源產(chǎn)品C*最后三個查詢因為內(nèi)存問題查詢失敗,整體查詢性能與ByteHouse相差較大。SSB寬表測試結(jié)果如下:查詢查詢完成時間(完成時間(ms)ByteHouseByteHouse開源產(chǎn)品開源產(chǎn)品C*996060334334q3.2q3.2q3.3q3.3q3.4q3.4q4.2q4.2q4.3q4.3sum709sum7092558標準SSB測試結(jié)果如下:查詢查詢完成時間(完成時間(ms)ByteHouseByteHouse開源產(chǎn)品開源產(chǎn)品C*20920976307630q3.2q3.2q3.3q3.3q3.4q3.4q4.2q4.2q4.3q4.39516下面列舉了本次SSB性能測試所使用的環(huán)境信息。每個測試環(huán)境3個節(jié)點,配置如下:操作系統(tǒng):CentOSLinuxrelease7.8.2003(Core)ByteHoue企業(yè)版:31(混布ZooKeeper:3.8.1)ByteHouse測試所使用的數(shù)據(jù)、生成、導(dǎo)入和查詢步驟如下。lineorderlineordercustomer300萬partsupplier20萬dateslineorder_flatSSB打平后的寬表解釋首先下載ssb工具包并編譯Bash$gitclone/vadimtk/ssb-dbgen.git$cdssb-dbgen$makeBash$./dbgen-s1000-Tc$./dbgen-s1000-Tl$./dbgen-s1000-Tp$./dbgen-s1000-Ts$./dbgen-s1000-TdDROPDATABASEIFEXISTSssb_localONCLUSTERch_benchmark;CREATEDATABASEssb_localONCLUSTERch_benchmark;USEssb_local;CREATETABLEcustomerONCLUSTERch_benchmark(C_CUSTKEYUInt32,C_NAMEString,C_ADDRESSString,C_CITYGlobalLowCardinality(String),C_NATIONGlobalLowCardinality(String),C_REGIONGlobalLowCardinality(String),C_PHONEFixedString(15),C_MKTSEGMENTGlobalLowCardinality(String))ENGINE=MergeTree()ORDERBY(C_CUSTKEY);CREATETABLEdwdateONCLUSTERch_benchmark(D_DATEKEYUInt32,D_DATEString,18D_DAYOFWEEKString,--defineD_DAYOFWEEKString,--definedinSection2.6asSize8,butWednes-dayis9lettersD_MONTHString,D_YEARUInt32,D_YEARMONTHNUMUInt32,D_YEARMONTHString,D_DAYNUMINWEEKUInt32,D_DAYNUMINMONTHUInt32,D_DAYNUMINYEARUInt32,D_MONTHNUMINYEARUInt32,D_WEEKNUMINYEARUInt32,D_SELLINGSEASONString,D_LASTDAYINWEEKFLUInt32,D_LASTDAYINMONTHFLUInt32,D_HOLIDAYFLUInt32,D_WEEKDAYFLUInt32)ENGINE=MergeTree()ORDERBY(D_DATEKEY);CREATETABLElineorderONCLUSTERch_benchmark(LO_ORDERKEYUInt32,UInt8,LO_CUSTKEYUInt32,LO_PARTKEYUInt32,LO_SUPPKEYUInt32,LO_ORDERDATEUInt32,GlobalLowCardinality(String),LO_SHIPPRIORITYUInt8,LO_QUANTITYUInt8,LO_EXTENDEDPRICEUInt32,LO_ORDTOTALPRICEUInt32,LO_DISCOUNTUInt8,UInt32,LO_SUPPLYCOSTUInt32,LO_TAXUInt8,LO_COMMITDATEDate,LO_SHIPMODEGlobalLowCardinality(String))ENGINE=MergeTree()PARTITIONBYtoYear(toString(LO_ORDERDATE))ORDERBY(LO_ORDERDATE,LO_ORDERKEY);CREATETABLEpartONCLUSTERch_benchmark(P_PARTKEYUInt32,P_NAMEString,P_MFGRGlobalLowCardinality(String),P_CATEGORYGlobalLowCardinality(String),P_BRANDP_COLORP_TYPEGlobalLowCardinality(String),GlobalLowCardinality(String),GlobalLowCardinality(String),UInt8,P_CONTAINERGlobalLowCardinality(String))ENGINE=MergeTree()ORDERBY(P_PARTKEY);CREATETABLEsupplierONCLUSTERch_benchmark(S_SUPPKEYUInt32,S_NAMEString,S_ADDRESSString,S_CITYGlobalLowCardinality(String),S_NATIONGlobalLowCardinality(String),S_REGIONGlobalLowCardinality(String),S_PHONEString)ENGINE=MergeTree()ORDERBY(S_SUPPKEY);--CreatedistributedtableDROPDATABASEIFEXISTSssbONCLUSTERch_benchmark;CREATEDATABASEssbONCLUSTERch_benchmark;usessb;CREATETABLEcustomerONCLUSTERch_benchmarkASssb_local.customerENGINE=Distributed(ch_benchmark,ssb_local,customer,C_CUSTKEY);CREATETABLEdwdateONCLUSTERch_benchmarkASssb_local.dwdateENGINE=Distributed(ch_benchmark,ssb_local,dwdate,D_DATEKEY);CREATETABLElineorderONCLUSTERch_benchmarkASssb_local.lineorderENGINE=Distributed(ch_benchmark,ssb_local,lineorder,rand());CREATETABLEpartONCLUSTERch_benchmarkASssb_local.partENGINE=Distributed(ch_benchmark,ssb_local,part,P_PARTKEY);CREATETABLEsupplierONCLUSTERch_benchmarkASssb_local.supplierENGINE=Distributed(ch_benchmark,ssb_local,supplier,S_SUPPKEY);/1920在在ByteHouse集群中建表:CREATETABLEssb_local.lineorder_flatONCLUSTERch_benchmark(LO_ORDERKEYUInt64,UInt8,LO_CUSTKEYUInt32,LO_PARTKEYUInt32,LO_SUPPKEYUInt32,LO_ORDERDATEDate,GlobalLowCardinality(String),LO_SHIPPRIORITYUInt8,LO_QUANTITYUInt8,LO_EXTENDEDPRICEUInt32,LO_ORDTOTALPRICEUInt32,LO_DISCOUNTUInt8,UInt32,LO_SUPPLYCOSTUInt32,LO_TAXUInt8,LO_COMMITDATEDate,LO_SHIPMODEGlobalLowCardinality(String),C_NAMEString,C_ADDRESSString,C_CITYGlobalLowCardinality(String),C_NATIONGlobalLowCardinality(String),C_REGIONGlobalLowCardinality(String),C_PHONEFixedString(15),C_MKTSEGMENTGlobalLowCardinality(String),S_NAMEString,S_ADDRESSString,S_CITYGlobalLowCardinality(String),S_NATIONGlobalLowCardinality(String),S_REGIONGlobalLowCardinality(String),S_PHONEString,P_NAMEString,P_MFGRGlobalLowCardinality(String),P_CATEGORYGlobalLowCardinality(String),P_BRANDGlobalLowCardinality(String),P_COLORGlobalLowCardinality(String),P_TYPEGlobalLowCardinality(String),P_SIZEUInt8,P_CONTAINERGlobalLowCardinality(String))ENGINE=MergeTree()PARTITIONBYtoYear(LO_ORDERDATE)ORDERBY(LO_ORDERDATE,LO_ORDERKEY);CREATETABLEssb.lineorder_flatONCLUSTERch_benchmarkASssb_local.li-neorder_flatENGINE=Distributed(ch_benchmark,ssb_local,lineorder_flat,rand());Bashclickhouse-client-dbench--query"INSERTINTOcustomerFORMATCSV"<customer.tblclickhouse-client-dbench--query"INSERTINTOpartFORMATCSV"<part.tblclickhouse-client-dbench--query"INSERTINTOsupplierFORMATCSV"<supplier.tblclickhouse-client-dbench--query"INSERTINTOlineorderFORMATCSV"<lineorder.tblclickhouse-client-dbench--query"INSERTINTOdwdateFORMATCSV"<dwdate.tbl插入數(shù)據(jù)到寬表lineorder_flat。INSERTINTOssb.lineorder_flatSELECTl.LO_ORDERKEYASLO_ORDERKEY,l.LO_CUSTKEYASLO_CUSTKEY,l.LO_PARTKEYASLO_PARTKEY,l.LO_SUPPKEYASLO_SUPPKEY,toDate(toString(l.LO_ORDERDATE))ASLO_ORDERDATE,l.LO_ORDERPRIORITYASLO_l.LO_SHIPPRIORITYASLO_SHIPPRIORITY,l.LO_QUANTITYASLO_QUANTITY,l.LO_EXTENDEDPRICEASLO_EXl.LO_ORDTOTALPRICEASLO_ORDTOTALPRICE,l.LO_DISCOUNTASLO_DISCOUNT,l.LO_SUPPLYCOSTASLO_SUPPLYCOST,l.LO_TAXASLO_TAX,l.LO_COMMITDATEASLO_COMMITDATE,l.LO_SHIPMODEASLO_SHIPMODE,c.C_NAMEASC_NAME,22c.C_c.C_ADDRESSASC_ADDRESS,c.C_CITYASC_CITY,c.C_NATIONASC_NATION,c.C_REGIONASC_REGION,c.C_PHONEASC_PHONE,c.C_MKTSEGMENTASC_MKTSEGMENT,s.S_NAMEASS_NAME,s.S_ADDRESSASS_ADDRESS,s.S_CITYASS_CITY,s.S_NATIONASS_NATION,s.S_REGIONASS_REGION,s.S_PHONEASS_PHONE,p.P_NAMEASP_NAME,p.P_MFGRASP_MFGR,p.P_CATEGORYASP_CATEGORY,p.P_BRANDASP_BRAND,p.P_COLORASP_COLOR,p.P_TYPEASP_TYPE,p.P_SIZEASP_SIZE,p.P_CONTAINERASP_CONTAINERFROMssb.lineorderlINNERJOINssb.customerAScONc.C_CUSTKEY=l.LO_CUSTKEYINNERJOINssb.supplierASsONs.S_SUPPKEY=l.LO_SUPPKEYINNERJOINssb.partASpONp.P_PARTKEY=l.LO_PARTKEY23--Q1.1sum(LO_EXTENDEDPRICE*LO_DISCOUNT)ASrevenuelineorder_flatLO_ORDERDATE>='1993-01-01'andLO_ORDERDATE<='1993-12-31'ANDLO_DISCOUNTBETWEEN1AND3ANDLO_QUANTITY<25;--Q1.2sum(LO_EXTENDEDPRICE*LO_DISCOUNT)ASrevenuelineorder_flatLO_ORDERDATE>='1994-01-01'andLO_ORDERDATE<='1994-01-31'ANDLO_DISCOUNTBETWEEN4AND6ANDLO_QUANTITYBETWEEN26--Q1.3sum(LO_EXTENDEDPRICE*LO_DISCOUNT)ASrevenuelineorder_flattoISOWeek(LO_ORDERDATE)=6ANDLO_ORDERDATE>='1994-01-01'andLO_ORDERDATE<='1994-12-31'ANDLO_DISCOUNTBETWEEN5AND7ANDLO_QUANTITYBETWEEN2624lineorder_flatlineorder_flatP_BRAND='MFGR#2239'year,P_BRANDyear,P_BRAND;--Q3.1C_NATION,S_NATION,toYear(LO_ORDERDATE)ASyear,sum(LO_REVENUE)ASrevenuelineorder_flatANDLO_ORDERDATE>='1992-01-01'C_NATION,S_NATION,yearyearASC,revenueDESC;----Q2.1sum(LO_REVENUE),toYear(LO_ORDERDATE)ASyear,P_BRANDlineorder_flatP_CATEGORY='MFGR#12'year,P_BRANDyear,P_BRAND;--Q2.2sum(LO_REVENUE),toYear(LO_ORDERDATE)ASyear,P_BRANDlineorder_flatANDP_BRAND<='MFGR#2228'year,P_BRANDyear,P_BRAND;--Q2.3sum(LO_REVENUE),toYear(LO_ORDERDATE)ASyear,P_BRAND/2526----Q3.4C_CITY,S_CITY,toYear(LO_ORDERDATE)ASyear,sum(LO_REVENUE)ASrevenuelineorder_flatC_CITY,S_CITY,yearyearASC,revenueDESC;--Q4.1toYear(LO_ORDERDATE)ASyear,C_NATION,sum(LO_REVENUE-LO_SUPPLYCOST)ASprofitlineorder_flatyear,C_NATIONyearASC,C_NATIONASC;----Q3.2C_CITY,S_CITY,toYear(LO_ORDERDATE)ASyear,sum(LO_REVENUE)ASrevenuelineorder_flatC_NATION='UNITEDSTATES'ANDS_NATION='UNITEDSTATES'ANDLO_ORDERDATE>='1992-01-01'C_CITY,S_CITY,yearyearASC,revenueDESC;--Q3.3C_CITY,S_CITY,toYear(LO_ORDERDATE)ASyear,sum(LO_REVENUE)ASrevenuelineorder_flatANDLO_ORDERDATE>='1992-01-01'C_CITY,S_CITY,yearyearASC,revenueDESC;/2728----Q4.2toYear(LO_ORDERDATE)ASyear,S_NATION,P_CATEGORY,sum(LO_REVENUE-LO_SUPPLYCOST)ASprofitlineorder_flatAND(LO_ORDERDATE>='1997andLO_ORDERDATE<='1998-12-31')year,S_NATION,P_CATEGORYyearASC,S_NATIONASC,P_CATEGORYASC;----Q4.3toYear(LO_ORDERDATE)ASyear,S_CITY,P_BRAND,sum(LO_REVENUE-LO_SUPPLYCOST)ASprofitlineorder_flatS_NATION='UNITEDSTATES'AND(LO_ORDERDATE>='1997andLO_ORDERDATE<='1998-12-31')ANDP_CATEGORY='MFGR#14'year,S_CITY,P_BRANDyearASC,S_CITYASC,P_BRANDASC;/2930標準SSB查詢:--Q1.1SUM(LO_EXTENDEDPRICE*LO_DISCOUNT)ASREVENUElineorder,dwdateLO_ORDERDATE=D_DATEKEYANDLO_DISCOUNTBETWEEN1AND3ANDLO_QUANTITY<25;--Q1.2SUM(LO_EXTENDEDPRICE*LO_DISCOUNT)ASREVENUElineorder,dwdateLO_ORDERDATE=D_DATEKEYANDD_YEARMONTHNUM=199401ANDLO_DISCOUNTBETWEEN4AND6ANDLO_QUANTITYBETWEEN26--Q1.3SUM(LO_EXTENDEDPRICE*LO_DISCOUNT)ASREVENUElineorder,dwdateLO_ORDERDATE=D_DATEKEYANDD_WEEKNUMINYEAR=6ANDD_YEAR=1994ANDLO_DISCOUNTBETWEEN5AND7ANDLO_QUANTITYBETWEEN26----Q2.1SUM(LO_REVENUE),D_YEAR,P_BRANDlineorder,dwdate,part,supplierLO_ORDERDATE=D_DATEKEYANDLO_PARTKEY=P_PARTKEYANDLO_SUPPKEY=S_SUPPKEYANDP_CATEGORY='MFGR#12'D_YEAR,P_BRANDD_YEAR,P_BRAND;--Q2.2SUM(LO_REVENUE),D_YEAR,P_BRANDlineorder,dwdate,part,supplierLO_ORDERDATE=D_DATEKEYANDLO_PARTKEY=P_PARTKEYANDLO_SUPPKEY=S_SUPPKEYANDP_BRAND<='MFGR#2228'D_YEAR,32LO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_ORDERDATE=D_DATEKEYANDC_REGION=S_REGIONC_NATION,S_NATION,D_YEARD_YEARASC,--Q3.2C_CITY,S_CITY,D_YEAR,customer,lineorder,supplier,dwdateLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_ORDERDATE=D_DATEKEYANDC_NATION='UNITEDSTATES'ANDS_NATION='UNITEDSTATES'ANDS_NATION=C_NATIONC_CITY,S_CITY,D_YEARD_YEARASC,P_P_BRANDD_YEAR,P_BRAND;--Q2.3SUM(LO_REVENUE),D_YEAR,P_BRANDlineorder,dwdate,part,supplierLO_ORDERDATE=D_DATEKEYANDLO_PARTKEY=P_PARTKEYANDLO_SUPPKEY=S_SUPPKEYANDP_BRAND='MFGR#2339'D_YEAR,P_BRANDD_YEAR,P_BRAND;--Q3.1C_NATION,S_NATION,D_YEAR,customer,lineorder,supplier,dwdate3334lineorder,lineorder,supplier,dwdateLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_ORDERDATE=D_DATEKEYAND()AND()ANDD_YEARMONTH='Dec1997'C_CITY,S_CITY,D_YEARD_YEARASC,--Q4.1D_YEAR,C_NATION,SUM(LO_REVENUE-LO_SUPPLYCOST)ASPROFITdwdate,customer,supplier,part,lineorderLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_PARTKEY=P_PARTKEYANDLO_ORDERDATE=D_DATEKEY----Q3.3C_CITY,S_CITY,D_YEAR,customer,lineorder,supplier,dwdateLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_ORDERDATE=D_DATEKEYAND()AND()C_CITY,S_CITY,D_YEARD_YEARASC,--Q3.4C_CITY,S_CITY,D_YEAR,customer,/3536D_YEAR,C_NATIOND_YEAR,C_NATION;--Q4.2D_YEAR,S_NATION,P_CATEGORY,SUM(LO_REVENUE-LO_SUPPLYCOST)ASPROFITdwdate,customer,supplier,part,lineorderLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_PARTKEY=P_PARTKEYANDLO_ORDERDATE=D_DATEKEYAND()D_YEAR,S_NATION,P_CATEGORYD_YEAR,S_NATION,P_CATEGORY;----Q4.3D_YEAR,S_CITY,P_BRAND,SUM(LO_REVENUE-LO_SUPPLYCOST)ASPROFITdwdate,customer,supplier,part,lineorderLO_CUSTKEY=C_CUSTKEYANDLO_SUPPKEY=S_SUPPKEYANDLO_PARTKEY=P_PARTKEYANDLO_ORDERDATE=D_DATEKEYANDS_NATION='UNITEDSTATES'AND()ANDP_CATEGORY='MFGR#14'D_YEAR,S_CITY,P_BRAND;3738TPC-H性能測試中無法正常執(zhí)行,整體查詢周期很長。在兩者均完成查詢的結(jié)果中,開源產(chǎn)品C*與ByteHouse查詢時間相差55倍,其中Q3、Q5、Q7等語句的查詢效率相差100倍以上,具體數(shù)據(jù)如下圖:39查詢查詢q2q3q4q5q6q7q8q9q20q22完成時間(ms)開源產(chǎn)品C*002440023886580442559000000ByteHouse40650884640下面列舉了本次性能測試所使用的環(huán)境信息。每個測試環(huán)境3個節(jié)點,配置如下:操作系統(tǒng):CentOSLinuxrelease7.8.2003(Core)ByteHoue企業(yè)版:.231customercustomerlineitemnationorderspart2000萬partsupp8000萬region5supplier100G數(shù)據(jù)行數(shù)41下載tpch-tool工具包生成TPC-H標準測試集scalefactor=100的數(shù)據(jù)。Bash./dbgen-s100--CreatelocaltableUSEtpch_local;CREATETABLEcustomerONCLUSTERch_benchmark(c_custkeyInt32NOTNULL,c_nameStringNOTNU

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論