[发明专利]一种独立于数据库的sql语句合并方法及系统在审
申请号: | 201610048596.1 | 申请日: | 2016-01-25 |
公开(公告)号: | CN105740344A | 公开(公告)日: | 2016-07-06 |
发明(设计)人: | 孙建洲;宋莹;孙毓忠 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 立于 数据库 sql 语句 合并 方法 系统 | ||
技术领域
本发明涉及数据库加速技术领域,特别涉及一种独立于数据库的sql语句合并方法及系统。
背景技术
随着各个领域中数据的不断增多更新,对各类数据支持的数据库也不断地在发展,与此同时,对于一个数据库得并发性能的要求也不断地被提高,而一个数据库的并发性能在很大程度上又守数据库本身以及硬件的支持而受到限制。
对于数据库来说,,并发数指状态为Active的非后台Session的个数,即是同一时刻,正在往数据库发送查询请求的请求个数。
对于Oracle,虽然Oracle可以最大支持200个并发,但在实际情况下,并发能达到50已经是很少见,对于10g的rac双节点,节点是rx8640,16cpu,64Gmemory,一般情况下,并发数还没到50压力就很重了,到80基本上是假死状态。
一台机器,8G的内存、64bitlinux系统,mysql连接数到250+内存就会处于一个警告值,再加上mysql连接不释放的原因,则会出现toomanyconnections的问题。
对于Hive,其默认Map/Reducejob是顺序执行的,默认并发数量是8,并发提交时的并发线程的个数默认也为8个。
对于数据库查询过程非常依赖于内存的Impala而言,在实验室三个物理结点,每个结点4核CPU,48G内存,3T硬盘,亿行表数据在并发执行小量数据查询时其最佳并发量却依然小于50。
而随着数据库引擎在各行业的数据查询中不断的运用,对于数据库并发的支持也显得越来越重要,而现有的从数据库本身内部来挖掘该数据库所支持的并发性能已经越来越不能满足人们日益增长的需求了,因而从外部来提出并行化思路便显得非常迫切需要了。
目前,大量合并相关研究开始针对这种由于充分利用内存而导致并发性能较弱,以及为了提高数据库查询速度而做出的合并改进技术被提出,这其中,主要有两大类,一类是在查询外部,即交付给数据库之前进行相应操作。专利(海量SQL语句合并归类的方法及装置,公开(公告)号:102945256A)通过某种装置或者语句合并归类的方法,获取SQL语句的变量值,并将变量值用常量替换,来得到解析后的SQL语句,然后计算并得到解析后SQL语句的HASH值,根据HASH值将得到的SQL语句归类合并。即只有当各个语句的变量完全一致时才可以参与合并,其合并的局限性很强,同时因为需要存储Hash值而额外占有的空间也会由于接收到的海量语句而产生一定的内存空间负担。
文章(ACombinedApproachtoPreventSQLInjectionAttacks,EvansDogbeRichardMillhamPrenithaSingh,ScienceandInformationConference2013)提出一种合并策略,针对所有已知认可的SQLsql语句进行一次解析树节点的合并,即每一个结点都会对应一条已知的sqlsql语句,以此作为一种规则,对于以后每次接收到的sql语句,都会与树中已有结点做对比,如若存在,则进行处理。若不存在,另行考虑。
上述几类分析工作,都是在数据库外部所做的语句合并,然而这两类合并,首先都是为了下一步的匹配而做的合并,要么是对于语句的条件变量要求很高,即所有变量都一致的情况下才能算匹配,要么只是对所有符合一定要求的SQL语句进行简单汇总合并,相比本专利的语句合并部分,只是本专利中合并对象很小的一部分。
专利(SQL脚本对象化的方法及系统,公开(公告)号:103617273A)发明了分解拆分复杂语句的方法,将一条sql语句拆分成多个查询对象,每个对象代表该查询的一块内容,当对象累积到一定程度后,后续的每条sql语句拆分后的每个模块都可以直接归属到前面已有的查询对象中,而前面所有查询对象对应的操作,和其对象操作之后的相应结果都会被存储起来,因此一旦涉及相同的模块操作,则可以进行直接读取结果操作。而本发明的提取属性字段部分是将每一条SQL语句都进行拆解封装到包含有多个成员变量的一个对象中去,即每一条语句都会对应到一个特有的对象,在语句重构过程中,针对每个封装的语句其各个模块进行整体性的合并操作,即最终获得的是一个包含多个sql语句中所有模块的相应内容。
同时,对于上述两类工作由于其工作的目的不同,其最终所获的结果并不是一条包含多条语句所有内容的完整sql语句,其合并的结果意义与本专利的合并结果意义完全不同。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610048596.1/2.html,转载请声明来源钻瓜专利网。