基于窗口函數(shù)和分布式集群的可視化學(xué)術(shù)搜索系統(tǒng)數(shù)據(jù)查詢優(yōu)化
發(fā)布時(shí)間:2021-01-16 07:59
針對(duì)在密集分析型查詢請(qǐng)求和海量數(shù)據(jù)的應(yīng)用場(chǎng)景下傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)MySQL性能不佳問(wèn)題,提出了基于窗口函數(shù)(Window Function)的分析型查詢優(yōu)化方法,以分區(qū)(Partitioning)方法代替?zhèn)鹘y(tǒng)的分組(Group by)操作,并提出了基于分布式集群(SQL-on-Hadoop:SparkSQL)計(jì)算引擎的海量數(shù)據(jù)查詢優(yōu)化方法,采用內(nèi)存列存儲(chǔ)優(yōu)化技術(shù)和Spark分布式集群計(jì)算以提高查詢性能.同時(shí),以典型的分析型SQL查詢實(shí)例驗(yàn)證了其有效性.結(jié)果表明,所提出的查詢優(yōu)化方法能夠顯著提高查詢性能.與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)MySQL相比,基于SparkSQL的查詢優(yōu)化方法的查詢速度大幅提高,從而驗(yàn)證了其用于可視化學(xué)術(shù)搜索系統(tǒng)AceMap數(shù)據(jù)查詢的正確性.
【文章來(lái)源】:上海交通大學(xué)學(xué)報(bào). 2019,53(08)北大核心
【文章頁(yè)數(shù)】:5 頁(yè)
【部分圖文】:
圖1窗口函數(shù)的3個(gè)概念Fig.1Threeconceptsofwindowfunction
horID=@AuthorID1.3性能對(duì)比實(shí)驗(yàn)采用一臺(tái)配置為兩個(gè)中央處理器(因特爾至強(qiáng)系列,型號(hào)E5-2630)、內(nèi)存128GB的服務(wù)器對(duì)3個(gè)學(xué)術(shù)系統(tǒng)中的典型SQL查詢進(jìn)行優(yōu)化,并將查詢執(zhí)行時(shí)間作為性能評(píng)價(jià)指標(biāo).以原SQL查詢?cè)趥鹘y(tǒng)的MySQL數(shù)據(jù)庫(kù)上的查詢執(zhí)行時(shí)間作為基準(zhǔn),對(duì)比采用基于窗口函數(shù)的查詢優(yōu)化方法的查詢執(zhí)行時(shí)間.表1列出了3個(gè)學(xué)術(shù)系統(tǒng)性能對(duì)比實(shí)驗(yàn)所涉及的SQL查詢的具體內(nèi)容,其查詢執(zhí)行時(shí)間的對(duì)比如圖2所示.可以看出,采用基于窗口函數(shù)的查詢優(yōu)化方法能夠在一定程度上提升查詢性能,使其查詢執(zhí)行時(shí)間減少18.6%(SQL-3).表1窗口函數(shù)查詢優(yōu)化的SQL查詢列表Tab.1TheSQLqueriesofwindowfunctionqueryoptimiza-tionSQL查詢編號(hào)SQL查詢描述SQL-1統(tǒng)計(jì)某一學(xué)者所有論文的SCI引用次數(shù)SQL-2統(tǒng)計(jì)學(xué)術(shù)合作次數(shù),查找與某兩名學(xué)者合作次數(shù)最多的學(xué)者SQL-3查找引用了某一篇論文的所有論文,并輸出其中出現(xiàn)頻次最多的關(guān)鍵詞圖2窗口函數(shù)的查詢優(yōu)化方法的結(jié)果Fig.2Contrastresultsofwindowfunctionqueryoptimization2基于SparkSQL的查詢優(yōu)化方法與基于窗口函數(shù)的查詢優(yōu)化方法的單節(jié)點(diǎn)計(jì)算模式不同,基于SparkSQL計(jì)算引擎的查詢優(yōu)化旨在分布式計(jì)算的框架下,借助于其多節(jié)點(diǎn)和多核的優(yōu)勢(shì)進(jìn)行SQL查詢,適用于大規(guī)模海量數(shù)據(jù)的應(yīng)用場(chǎng)景.2.1Spark
能夠查詢一些頻繁出現(xiàn)的聚合,將其中包含的數(shù)據(jù)列存儲(chǔ)到集群的同一個(gè)節(jié)點(diǎn)上,使其能夠快速地被讀入內(nèi)存,從而提高查詢速度.參數(shù)優(yōu)化是充分發(fā)揮Spark集群計(jì)算優(yōu)勢(shì)以高效執(zhí)行作業(yè)的關(guān)鍵.一個(gè)作業(yè)在Spark集群中的執(zhí)行需要由位于Spark集群主節(jié)點(diǎn)中的Driver進(jìn)程與若干個(gè)從節(jié)點(diǎn)中的Executor進(jìn)程協(xié)同完成[10],兩者之間的關(guān)系如圖3所示.其中,Driver負(fù)責(zé)集群資源的分配,Executor負(fù)責(zé)具體任務(wù)的執(zhí)行.圖3Driver進(jìn)程與Executor進(jìn)程的關(guān)系Fig.3Relationshipbetweendriverandexecutorprocesses本文對(duì)以下參數(shù)[10]進(jìn)行優(yōu)化:(1)參數(shù)SPARK_EXECUTOR_INSTANC-ES.表示Spark集群能夠同時(shí)啟動(dòng)的Executor?qū)嵗齻(gè)數(shù)的上限值,其對(duì)硬件資源的利用效率具有影響.結(jié)合實(shí)驗(yàn)條件,本文最終選擇其值為20,經(jīng)測(cè)試達(dá)到較優(yōu)的查詢性能.(2)參數(shù)SPARK_EXECUTOR_CORES.表示每個(gè)Executor能夠使用的中央處理器(CPU)核的數(shù)量,它影響Spark執(zhí)行任務(wù)時(shí)的并行度.本文將其值設(shè)置為10,相應(yīng)的能夠同時(shí)并行執(zhí)行的任務(wù)數(shù)為20×10=200.(3)參數(shù)SPARK_EXECUTOR_MEMORY.表示分配給每一個(gè)Executor的內(nèi)存數(shù)量,同一個(gè)Executor的所有CPU核共用.經(jīng)實(shí)際測(cè)試,將其值設(shè)置為10GB時(shí)的查詢性能較
本文編號(hào):2980448
【文章來(lái)源】:上海交通大學(xué)學(xué)報(bào). 2019,53(08)北大核心
【文章頁(yè)數(shù)】:5 頁(yè)
【部分圖文】:
圖1窗口函數(shù)的3個(gè)概念Fig.1Threeconceptsofwindowfunction
horID=@AuthorID1.3性能對(duì)比實(shí)驗(yàn)采用一臺(tái)配置為兩個(gè)中央處理器(因特爾至強(qiáng)系列,型號(hào)E5-2630)、內(nèi)存128GB的服務(wù)器對(duì)3個(gè)學(xué)術(shù)系統(tǒng)中的典型SQL查詢進(jìn)行優(yōu)化,并將查詢執(zhí)行時(shí)間作為性能評(píng)價(jià)指標(biāo).以原SQL查詢?cè)趥鹘y(tǒng)的MySQL數(shù)據(jù)庫(kù)上的查詢執(zhí)行時(shí)間作為基準(zhǔn),對(duì)比采用基于窗口函數(shù)的查詢優(yōu)化方法的查詢執(zhí)行時(shí)間.表1列出了3個(gè)學(xué)術(shù)系統(tǒng)性能對(duì)比實(shí)驗(yàn)所涉及的SQL查詢的具體內(nèi)容,其查詢執(zhí)行時(shí)間的對(duì)比如圖2所示.可以看出,采用基于窗口函數(shù)的查詢優(yōu)化方法能夠在一定程度上提升查詢性能,使其查詢執(zhí)行時(shí)間減少18.6%(SQL-3).表1窗口函數(shù)查詢優(yōu)化的SQL查詢列表Tab.1TheSQLqueriesofwindowfunctionqueryoptimiza-tionSQL查詢編號(hào)SQL查詢描述SQL-1統(tǒng)計(jì)某一學(xué)者所有論文的SCI引用次數(shù)SQL-2統(tǒng)計(jì)學(xué)術(shù)合作次數(shù),查找與某兩名學(xué)者合作次數(shù)最多的學(xué)者SQL-3查找引用了某一篇論文的所有論文,并輸出其中出現(xiàn)頻次最多的關(guān)鍵詞圖2窗口函數(shù)的查詢優(yōu)化方法的結(jié)果Fig.2Contrastresultsofwindowfunctionqueryoptimization2基于SparkSQL的查詢優(yōu)化方法與基于窗口函數(shù)的查詢優(yōu)化方法的單節(jié)點(diǎn)計(jì)算模式不同,基于SparkSQL計(jì)算引擎的查詢優(yōu)化旨在分布式計(jì)算的框架下,借助于其多節(jié)點(diǎn)和多核的優(yōu)勢(shì)進(jìn)行SQL查詢,適用于大規(guī)模海量數(shù)據(jù)的應(yīng)用場(chǎng)景.2.1Spark
能夠查詢一些頻繁出現(xiàn)的聚合,將其中包含的數(shù)據(jù)列存儲(chǔ)到集群的同一個(gè)節(jié)點(diǎn)上,使其能夠快速地被讀入內(nèi)存,從而提高查詢速度.參數(shù)優(yōu)化是充分發(fā)揮Spark集群計(jì)算優(yōu)勢(shì)以高效執(zhí)行作業(yè)的關(guān)鍵.一個(gè)作業(yè)在Spark集群中的執(zhí)行需要由位于Spark集群主節(jié)點(diǎn)中的Driver進(jìn)程與若干個(gè)從節(jié)點(diǎn)中的Executor進(jìn)程協(xié)同完成[10],兩者之間的關(guān)系如圖3所示.其中,Driver負(fù)責(zé)集群資源的分配,Executor負(fù)責(zé)具體任務(wù)的執(zhí)行.圖3Driver進(jìn)程與Executor進(jìn)程的關(guān)系Fig.3Relationshipbetweendriverandexecutorprocesses本文對(duì)以下參數(shù)[10]進(jìn)行優(yōu)化:(1)參數(shù)SPARK_EXECUTOR_INSTANC-ES.表示Spark集群能夠同時(shí)啟動(dòng)的Executor?qū)嵗齻(gè)數(shù)的上限值,其對(duì)硬件資源的利用效率具有影響.結(jié)合實(shí)驗(yàn)條件,本文最終選擇其值為20,經(jīng)測(cè)試達(dá)到較優(yōu)的查詢性能.(2)參數(shù)SPARK_EXECUTOR_CORES.表示每個(gè)Executor能夠使用的中央處理器(CPU)核的數(shù)量,它影響Spark執(zhí)行任務(wù)時(shí)的并行度.本文將其值設(shè)置為10,相應(yīng)的能夠同時(shí)并行執(zhí)行的任務(wù)數(shù)為20×10=200.(3)參數(shù)SPARK_EXECUTOR_MEMORY.表示分配給每一個(gè)Executor的內(nèi)存數(shù)量,同一個(gè)Executor的所有CPU核共用.經(jīng)實(shí)際測(cè)試,將其值設(shè)置為10GB時(shí)的查詢性能較
本文編號(hào):2980448
本文鏈接:http://sikaile.net/kejilunwen/sousuoyinqinglunwen/2980448.html
最近更新
教材專著