基于窗口函数和分布式集群的可视化学术搜索系统数据查询优化
发布时间:2021-01-16 07:59
针对在密集分析型查询请求和海量数据的应用场景下传统关系型数据库MySQL性能不佳问题,提出了基于窗口函数(Window Function)的分析型查询优化方法,以分区(Partitioning)方法代替传统的分组(Group by)操作,并提出了基于分布式集群(SQL-on-Hadoop:SparkSQL)计算引擎的海量数据查询优化方法,采用内存列存储优化技术和Spark分布式集群计算以提高查询性能.同时,以典型的分析型SQL查询实例验证了其有效性.结果表明,所提出的查询优化方法能够显著提高查询性能.与传统的关系型数据库MySQL相比,基于SparkSQL的查询优化方法的查询速度大幅提高,从而验证了其用于可视化学术搜索系统AceMap数据查询的正确性.
【文章来源】:上海交通大学学报. 2019,53(08)北大核心
【文章页数】:5 页
【部分图文】:
图1窗口函数的3个概念Fig.1Threeconceptsofwindowfunction
horID=@AuthorID1.3性能对比实验采用一台配置为两个中央处理器(因特尔至强系列,型号E5-2630)、内存128GB的服务器对3个学术系统中的典型SQL查询进行优化,并将查询执行时间作为性能评价指标.以原SQL查询在传统的MySQL数据库上的查询执行时间作为基准,对比采用基于窗口函数的查询优化方法的查询执行时间.表1列出了3个学术系统性能对比实验所涉及的SQL查询的具体内容,其查询执行时间的对比如图2所示.可以看出,采用基于窗口函数的查询优化方法能够在一定程度上提升查询性能,使其查询执行时间减少18.6%(SQL-3).表1窗口函数查询优化的SQL查询列表Tab.1TheSQLqueriesofwindowfunctionqueryoptimiza-tionSQL查询编号SQL查询描述SQL-1统计某一学者所有论文的SCI引用次数SQL-2统计学术合作次数,查找与某两名学者合作次数最多的学者SQL-3查找引用了某一篇论文的所有论文,并输出其中出现频次最多的关键词图2窗口函数的查询优化方法的结果Fig.2Contrastresultsofwindowfunctionqueryoptimization2基于SparkSQL的查询优化方法与基于窗口函数的查询优化方法的单节点计算模式不同,基于SparkSQL计算引擎的查询优化旨在分布式计算的框架下,借助于其多节点和多核的优势进行SQL查询,适用于大规模海量数据的应用场景.2.1Spark
能够查询一些频繁出现的聚合,将其中包含的数据列存储到集群的同一个节点上,使其能够快速地被读入内存,从而提高查询速度.参数优化是充分发挥Spark集群计算优势以高效执行作业的关键.一个作业在Spark集群中的执行需要由位于Spark集群主节点中的Driver进程与若干个从节点中的Executor进程协同完成[10],两者之间的关系如图3所示.其中,Driver负责集群资源的分配,Executor负责具体任务的执行.图3Driver进程与Executor进程的关系Fig.3Relationshipbetweendriverandexecutorprocesses本文对以下参数[10]进行优化:(1)参数SPARK_EXECUTOR_INSTANC-ES.表示Spark集群能够同时启动的Executor实例个数的上限值,其对硬件资源的利用效率具有影响.结合实验条件,本文最终选择其值为20,经测试达到较优的查询性能.(2)参数SPARK_EXECUTOR_CORES.表示每个Executor能够使用的中央处理器(CPU)核的数量,它影响Spark执行任务时的并行度.本文将其值设置为10,相应的能够同时并行执行的任务数为20×10=200.(3)参数SPARK_EXECUTOR_MEMORY.表示分配给每一个Executor的内存数量,同一个Executor的所有CPU核共用.经实际测试,将其值设置为10GB时的查询性能较
本文编号:2980448
【文章来源】:上海交通大学学报. 2019,53(08)北大核心
【文章页数】:5 页
【部分图文】:
图1窗口函数的3个概念Fig.1Threeconceptsofwindowfunction
horID=@AuthorID1.3性能对比实验采用一台配置为两个中央处理器(因特尔至强系列,型号E5-2630)、内存128GB的服务器对3个学术系统中的典型SQL查询进行优化,并将查询执行时间作为性能评价指标.以原SQL查询在传统的MySQL数据库上的查询执行时间作为基准,对比采用基于窗口函数的查询优化方法的查询执行时间.表1列出了3个学术系统性能对比实验所涉及的SQL查询的具体内容,其查询执行时间的对比如图2所示.可以看出,采用基于窗口函数的查询优化方法能够在一定程度上提升查询性能,使其查询执行时间减少18.6%(SQL-3).表1窗口函数查询优化的SQL查询列表Tab.1TheSQLqueriesofwindowfunctionqueryoptimiza-tionSQL查询编号SQL查询描述SQL-1统计某一学者所有论文的SCI引用次数SQL-2统计学术合作次数,查找与某两名学者合作次数最多的学者SQL-3查找引用了某一篇论文的所有论文,并输出其中出现频次最多的关键词图2窗口函数的查询优化方法的结果Fig.2Contrastresultsofwindowfunctionqueryoptimization2基于SparkSQL的查询优化方法与基于窗口函数的查询优化方法的单节点计算模式不同,基于SparkSQL计算引擎的查询优化旨在分布式计算的框架下,借助于其多节点和多核的优势进行SQL查询,适用于大规模海量数据的应用场景.2.1Spark
能够查询一些频繁出现的聚合,将其中包含的数据列存储到集群的同一个节点上,使其能够快速地被读入内存,从而提高查询速度.参数优化是充分发挥Spark集群计算优势以高效执行作业的关键.一个作业在Spark集群中的执行需要由位于Spark集群主节点中的Driver进程与若干个从节点中的Executor进程协同完成[10],两者之间的关系如图3所示.其中,Driver负责集群资源的分配,Executor负责具体任务的执行.图3Driver进程与Executor进程的关系Fig.3Relationshipbetweendriverandexecutorprocesses本文对以下参数[10]进行优化:(1)参数SPARK_EXECUTOR_INSTANC-ES.表示Spark集群能够同时启动的Executor实例个数的上限值,其对硬件资源的利用效率具有影响.结合实验条件,本文最终选择其值为20,经测试达到较优的查询性能.(2)参数SPARK_EXECUTOR_CORES.表示每个Executor能够使用的中央处理器(CPU)核的数量,它影响Spark执行任务时的并行度.本文将其值设置为10,相应的能够同时并行执行的任务数为20×10=200.(3)参数SPARK_EXECUTOR_MEMORY.表示分配给每一个Executor的内存数量,同一个Executor的所有CPU核共用.经实际测试,将其值设置为10GB时的查询性能较
本文编号:2980448
本文链接:https://www.wllwen.com/kejilunwen/sousuoyinqinglunwen/2980448.html