分区表访问方法、装置及设备、计算机可读存储介质制造方法及图纸

技术编号:21628276 阅读:30 留言:0更新日期:2019-07-17 10:53
本发明专利技术公开一种分区表访问方法、装置及设备、计算机可读存储介质,该方法包括步骤:确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称;根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句;执行所述待访问数据对应的分区子表的SQL语句。本发明专利技术通过定位到的分区子表名称,可直接访问分区子表;避开了大量的元数据系统表访问,避免打开的表数量过多,绕开了影响访问耗时较多的环节;解决了在HAWQ系统中,请求访问分区表时的性能缓慢问题。

Access methods, devices and devices of partition tables, computer-readable storage media

【技术实现步骤摘要】
分区表访问方法、装置及设备、计算机可读存储介质
本专利技术涉及计算机
,尤其涉及一种分区表访问方法、装置及设备、计算机可读存储介质。
技术介绍
在大数据时代背景下,各行各业的数据量激增,对基于海杜普的结构化查询语言(SQLonHadoop)的应用需求非常迫切与强烈。IT和互联网厂商开始纷纷推出针对大数据场景下SQL(StructuredQueryLanguage,结构化查询语言)分析引擎。HAWQ(HadoopWithQuery)由GreenPlum发展而来,是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用。和其他关系型数据库类似,接受SQL,返回结果集。但它具有大规模并行处理很多传统数据库以及其他数据库没有的特性及功能。在HAWQ的应用中,分区表(即含分区的表)十分常见,针对分区表的查询和插入操作也十分常用。在HAWQ中,表的每个分区均是一张分区子表,分区子表与独立的表并无本质区别。如果通过访问表(或相对“子表”而言称之为“主表”)进而访问分区中的数据,则系统首先访问主表的元数据,之后访问所有分区子表的元数据。而一张分区子表会涉及到大量元数据(主要是几十张单独存储的系统表),分区数量过多会导致次数繁多的加载元数据的IO(Input/Output,输入/输出)操作,消耗大量的系统资源,进而导致请求(查询或插入)响应缓慢。表的分区数量越多,性能缓慢程度越明显。另一方面,在HAWQ中同时打开的表数量(或者称为同时申请的表“句柄”资源)本身也是一个资源。当同时打开的表数量过多,会导致该资源的大量占用,影响到请求的执行效率。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种分区表访问方法、装置及设备、计算机可读存储介质,以解决在HAWQ系统中,请求访问分区表(查询或插入)时的性能缓慢问题。本专利技术解决上述技术问题所采用的技术方案如下:根据本专利技术的一个方面,提供的一种分区表访问方法,所述方法包括步骤:确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称;根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句;执行所述待访问数据对应的分区子表的SQL语句。根据本专利技术的另一个方面,提供的一种分区表访问装置,所述装置包括子表定位模块、SQL语句转换模块和执行模块;所述子表定位模块,用于确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称;所述SQL语句转换模块,用于根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句;所述执行模块,用于执行所述待访问数据对应的分区子表的SQL语句。根据本专利技术的另一个方面,提供的一种分区表访问设备,所述分区表访问设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分区表访问程序,所述分区表访问程序被所述处理器执行时实现上述的分区表访问方法的步骤。根据本专利技术的另一个方面,提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有分区表访问程序,所述分区表访问程序被处理器执行时实现上述的分区表访问方法的步骤。本专利技术实施例的分区表访问方法、装置及设备、计算机可读存储介质,通过定位到的分区子表名称,可直接访问分区子表;避开了大量的元数据系统表访问,避免打开的表数量过多,绕开了影响访问耗时较多的环节;解决了在HAWQ系统中,请求访问分区表时的性能缓慢问题。附图说明图1为本专利技术第一实施例的分区表访问方法流程示意图;图2为本专利技术第一实施例的分区表访问方法中确定分区子表的命名与分区字段的对应关系的流程示意图;图3为本专利技术第一实施例的分区表访问方法另一流程示意图;图4为本专利技术第二实施例的分区表访问装置结构示意图;图5为本专利技术第二实施例的分区表访问装置中子表定位模块结构示意图;图6为本专利技术第二实施例的分区表访问装置另一结构示意图;图7为本专利技术第三实施例的分区表访问装置结构示意图;图8为本专利技术实施例实施前的分区表访问的性能量化分析结构示意图;图9为本专利技术实施例实施后的分区表访问的性能量化分析结构示意图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。第一实施例如图1所示,本专利技术第一实施例提供一种分区表访问方法,其特征在于,所述方法包括步骤:S11、确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称。在本实施例中,所述分区字段包括日期字段或者数字字段。请参考图2所示,在本实施例中,通过以下方式确定所述分区子表的命名与分区字段的对应关系:S111、对内核源代码进行分析,得到所述分区子表的命名规则;S112、根据所述分区子表的命名规则,确定所述分区子表的命名与分区字段的对应关系。分区表在HAWQ的应用场景中很常见,分区均是按照一定规律分区。最为常见的分区规则是按日期分区和按数字分区,例如一天为一个分区,或一个月为一个分区。在含有分区的HAWQ的表中,每一次查询或插入数据的请求,均会落到对应分区的子表中。HAWQ会通过一种命名规则,将每个分区一一对应到分区子表的名称,而这种命名规则是有规律可循的。例如:CREATETABLEsale(idint,datedate,amtdecimal(10,2))DISTRIBUTEDBY(id)PARTITIONBYRANGE(date)(START(date'2015-01-01')INCLUSIVEEND(date'2020-01-01')EXCLUSIVEEVERY(INTERVAL'1day'));从以上代码中,可以看出创建出来的分区子表从2015-01-01开始命名为sale_1_prt_1,命名尾数逐一递增,直到2020-01-01的命名为sale_1_prt_1826。以上的按照日期分区,可以给出计算公式,分区子表名:主表名_1_prt_当天日期与起始日期的天数间隔,其中天数间隔算上了首尾当天。假设需要在上述sale表中定位2016-02-03的分区子表名称,则直接计算2016-02-03与2015-01-01这两者之间的日期间隔,算上首尾当天,总共间隔400天。所以分区子表的名称为:sale_1_prt_400。S12、根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句。在一种实施方式中,所述根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句包括步骤:根据所述待访问数据的分布情况和定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为一个或多个分区子表的SQL语句。需要说明的是,SQL语句的转换工作,可在SQL应用程序或HAWQ源码中完成,也可单独成为一个HAWQ插件,根据命名规则编写相应代码即可。也可由执行SQL的用户手动改写SQL语句。S13、执行所述待访问数据对应的分区本文档来自技高网...

【技术保护点】
1.一种分区表访问方法,其特征在于,所述方法包括步骤:确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称;根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句;执行所述待访问数据对应的分区子表的SQL语句。

【技术特征摘要】
1.一种分区表访问方法,其特征在于,所述方法包括步骤:确定分区子表的命名与分区字段的对应关系,根据所述分区字段定位所述分区子表名称;根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句;执行所述待访问数据对应的分区子表的SQL语句。2.根据权利要求1所述的一种分区表访问方法,其特征在于,所述分区字段包括日期字段或者数字字段。3.根据权利要求1所述的一种分区表访问方法,其特征在于,通过以下方式确定所述分区子表的命名与分区字段的对应关系:对内核源代码进行分析,得到所述分区子表的命名规则;根据所述分区子表的命名规则,确定所述分区子表的命名与分区字段的对应关系。4.根据权利要求1所述的一种分区表访问方法,其特征在于,所述根据定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为待访问数据对应的分区子表的SQL语句包括步骤:根据所述待访问数据的分布情况和定位到的所述分区子表名称,将待访问数据的结构化查询语言SQL语句,转换为一个或多个分区子表的SQL语句。5.根据权利要求1所述的一种分区表访问方法,其特征在于,所述执行所述待访问数据对应的分区子表的SQL语句之后还包括步骤:获取并展示所述待访问数据对应的分区子表的SQL语句的执行结果。6.一种分区表访问装置,其特征在于,所述装置包括子表定位模块、SQL语句转换模块和执行模块;所述子表定位...

【专利技术属性】
技术研发人员:方沛鲍焱丁岩
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1