[发明专利]一种存储过程处理方法及装置有效
申请号: | 201680083345.5 | 申请日: | 2016-03-14 |
公开(公告)号: | CN108780452B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 王国平;朱俊华 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/242;G06F16/27;G06F16/28 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 存储 过程 处理 方法 装置 | ||
一种存储过程处理方法及装置,其中,该方法包括:将待处理存储过程中的SQL语句解析为SQL基本块,其次,基于SQL基本块中的谓词生成谓词关系解析文件,并解析谓词关系解析文件中的谓词,衍生出谓词关系解析文件中的数据库表对应的衍生谓词,最后,在判断出数据库表是协同分区的,且谓词关系解析文件中的每一个分区表所对应的谓词均包括预设参数赋值类型的谓词的情况下,在数据库系统中的指定分区上运行所述待处理存储过程。通过上述方式,数据库系统能够自动识别出当前待处理存储过程的单分区类型,并在指定分区上运行该待处理存储过程,有利于提升数据库系统的整体性能和可用性。
技术领域
本发明涉及数据存储技术领域,尤其涉及一种存储过程处理方法及装置
背景技术
分布式数据库系统是指用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库系统。每个被连接起来的数据库单元通常被称为节点,也称为分区。分布式数据库系统中的表通常被分为分区表和复制表,分区表是指按照特定列进行水平切分并存储在分区上的表,复制表是指在每个分区中都存在完整数据的表。元组是数据库表中的一行。当分区表集合{R1,R2,...,Rn}中的分区表包含相同分区列值的元组都被分配到同一个分区时,该分区表集合称为协同分区。
存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的结构化查询语言SQL(Structured Query Language)集合,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。SQL是关系数据库管理系统的标准语言,给定一个SQL查询语句,该查询语句从数据库中获取一组特定行,并指定要作为结果集返回的特定行的限定条件。这种限定条件在数据库系统中被称为谓词。谓词通常出现在SQL语句中的WHERE子句和HAVING子句中。举例来说,对于SQL语句{select*from A,B where A.a=1 and A.a<B.b},A.a=1 andA.a<B.b指定了该查询语句的结果集中的行需要满足的条件,所以是该查询语句的谓词。
分布式数据库系统中的存储过程具体可以分为单分区存储过程和多分区存储过程。单分区存储过程是指只需要在一个分区上运行的存储过程。多分区存储过程是指需要在1个以上分区上运行的存储过程。多分区存储过程会下发至相对应的分区上运行并由一个节点负责协调。举例来说,如图1所示,三个协同分区的分区表集合{A,B,C},它们的分区列分别是a1,b1和c1并且它们都被水平切分成三块并且存储在节点X,Y和Z中。包含SQL语句{select*from A where A.a1=1}的存储过程是单分区的,因为表A是在列a1上进行分区的,所以满足谓词A.a1=1的元组肯定存在一个分区上,所以它只需要在一个分区上运行。包含SQL语句{select*from A,B where A.a=1 and A.a<B.b}的存储过程是多分区的,因为满足谓词A.a=1 and A.a<B.b的元组分布在多个分区上,所以它需要在多个分区上运行。
区分单分区存储过程和多分区存储过程对分布式数据库系统的性能有着很大的影响。如果一个单分区存储过程被当成多分区存储过程来运行,不仅影响了存储过程的性能,而且浪费了系统资源。而如果一个多分区存储过程被当成单分区存储过程来运行,则会导致存储过程错误。因此,如何自动的区分单分区存储过程和多分区存储过程在分布式数据库系统中尤为重要。
发明内容
本申请提供一种存储过程处理方法及装置,以期提出一种自动区分单分区存储过程的方法,有利于提升数据库系统的整体性能和可用性。
第一方面,本申请的实施例提供一种存储过程处理方法,由数据库系统执行,所述数据库系统运行在计算机设备上,包括以下处理过程:
首先,数据库系统解析待处理存储过程中的X个SQL语句为Y个SQL基本块,其中,所述SQL基本块为不包含子查询和视图的SQL语句,所述Y个SQL基本块包括P个谓词和N个数据库表,X为正整数,Y为大于或等于X的整数,P、N为正整数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680083345.5/2.html,转载请声明来源钻瓜专利网。