CN103729379B - 结构化查询语言程序的计算方法、调整方法和服务器 - Google Patents
结构化查询语言程序的计算方法、调整方法和服务器 Download PDFInfo
- Publication number
- CN103729379B CN103729379B CN201210392343.8A CN201210392343A CN103729379B CN 103729379 B CN103729379 B CN 103729379B CN 201210392343 A CN201210392343 A CN 201210392343A CN 103729379 B CN103729379 B CN 103729379B
- Authority
- CN
- China
- Prior art keywords
- optimization
- sql programs
- programs
- sql
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/2454—Optimisation of common expressions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种SQL程序的计算方法、调整方法和服务器。该方法包括:服务器获取待计算的原始SQL程序,该原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。本申请实施例提高了对原始SQL程序计算的效率,减轻了服务器对源数据的访问负担。
Description
技术领域
本申请涉及数据查询领域,尤其涉及一种结构化查询语言SQL程序的计算方法、调整方法和服务器。
背景技术
随着互联网的快速发展,产生了大量的数据。对这些数据的操作,如查询等,占用了大量的计算资源。并且由于数据查询操作的相似性,导致大量信息的重复计算。例如,作为电子商务网站中,为完成数据操作,每天都要运行一万到两万个结构化查询语言(Structured Query Language,SQL)程序,在运行时,通过调度***实现所有SQL程序的顺序调度。这些SQL程序看上去是为了解决各种各样的业务问题,但其本质上是对于源数据的类似操作,由于计算的相似性,导致大量的重复计算。
现有技术下,SQL程序的计算方法为:对每个需要运行的SQL程序都进行完整的计算。现有的SQL程序的计算方法的缺点是:很多SQL程序都是对源数据的类似操作,因此,对每个SQL程序都进行完整的计算相当于每次都对源数据进行扫描,在源数据量大的情况下,这种运算严重浪费了计算资源,而且延长了计算时间,计算效率低。
发明内容
本申请的目的是,提供一种SQL程序的计算方法、调整方法和服务器,以实现服务器自动对要进行运算的原始SQL程序进行调整得到优化SQL程序,提高对原始SQL程序计算的效率,以及减轻服务器对源数据的访问负担。
为实现上述目的,本申请提供了一种SQL程序的计算方法,所述方法包括:
服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。
本申请还提供了一种SQL程序的调整方法,所述方法包括:
使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
相应地,本申请还提供了一种服务器,所述服务器包括:
获取单元,用于服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
提取单元,用于根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
计算单元,用于根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。
相应地,本申请还提供了一种服务器,所述服务器包括:
建树单元,用于使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
匹配单元,用于对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
存储单元,用于将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
替换单元,用于使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
因此,本申请实现了服务器对大量的原始SQL程序进行分解和重组,得到优化SQL程序,并且对原始SQL程序公用的计算逻辑的优化逻辑结果存储在第二缓存表中,将优化逻辑结果的内容存储在第一缓存表中,使得对原始SQL的计算可以替换为对优化SQL程序的计算,提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。
附图说明
图1为本申请实施例提供的一种SQL程序的计算方法流程图;
图2为本申请实施例提供的一种SQL程序的调整方法流程图;
图3(a)为本申请实施例提供的原始SQL程序1对应的树结构示意图;
图3(b)为本申请实施例提供的原始SQL程序2对应的树结构示意图;
图3(c)为本申请实施例提供的原始SQL程序1和原始SQL程序2的最大匹配子树示意图;
图4为本申请实施例提供的一种服务器的示意图;
图5为本申请实施例提供的一种服务器的示意图。
具体实施方式
下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。
本申请提供的SQL程序的计算方法及服务器,通过对原始SQL程序进行分组和重组,提取到多个原始SQL程序中公用的计算逻辑,将该公用的计算逻辑及计算逻辑的优化逻辑结果保存在第二缓存表中,将该优化逻辑结果的内容保存在第一缓存表中,使用公用的计算逻辑的优化逻辑结果代替原始SQL程序中的匹配的公用的计算逻辑,构建出优化SQL程序,并将优化SQL程序保存在优化数据库中。在服务器对原始SQL程序进行计算时,服务器根据原始SQL程序的标识信息在优化数据库中获取对应的优化SQL程序,通过对优化SQL程序的计算完成对原始SQL程序的计算。从而实现服务器自动对要进行运算的原始SQL程序进行优化得到优化SQL程序,提高对原始SQL程序计算的效率,以及减轻服务器对源数据的访问负担。
本申请实施例提供的SQL程序的计算方法和服务器在实际应用时,作为一种新的计算方法可应用于被开源语法分析器Antlr支持的数据库***的大数据处理方案中,在服务器对大量的SQL程序进行计算时,通过对原始SQL程序的分解和重组,提取到多个SQL程序中公用的计算逻辑,并将该公用的计算逻辑及该计算逻辑的优化逻辑结果保存在缓存表中,使用公用的优化逻辑结果代替原始SQL程序中的匹配的部分,构建出优化SQL程序。通过对SQL程序的计算实现对原始SQL程序的计算,提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。
如图1所示,其为本申请实施例提供的一种SQL程序的计算方法流程图。该实施例主体是服务器,其中详细描述了如何对原始SQL程序进行计算。本申请实施例SQL程序的计算方法具体包括以下步骤:
步骤101,服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
具体地,当服务器需要对大量的原始SQL程序进行计算时,可以首先访问原始数据库,将要进行计算的数据库从原始数据库中提取出来。其中,原始数据库中保存了所有需要进行计算的原始SQL程序。每一个SQL程序都有一个唯一的标识信息,在原始数据库中除了保存SQL程序外,还保存了对应的SQL程序的标识信息。
步骤102,根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
服务器在离线时,可以首先对原始数据库中的原始SQL程序进行优化调整,并将得到的优化SQL程序和原始SQL程序都按照相同的标识信息保存在优化数据库中。其中,优化数据库中保存了优化SQL程序和原始SQL程序,服务器在离线时可以对优化数据库中保存的优化SQL程序进行更新。
服务器对原始SQL程序的优化过程为:
1)使用语法解析器,对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
2)对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
3)将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
4)使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
其中,所述匹配运算是指从语法树的叶节点开始向上扫描,匹配上一层相同的父节点及父节点的子节点,如果一致,则继续向上层匹配,当上层找不到匹配的节点时,则匹配操作结束,所得到的匹配节点所组成的子树就是两个原始SQL程序的匹配的最大子树。对于该匹配的最大子树,在语法上具有完整性,可以按照这个子树的计算逻辑及优化逻辑结果建立第二缓存表,并将这个子树的计算逻辑及优化逻辑结果放入第二缓存表中,这样所有具有该子树对应的子程序的原始SQL程序可以公用一份优化逻辑结果。而对于这个匹配的最大子树的计算逻辑的优化逻辑结果的内容,则可以保存在第一缓存表中。
所述的第一缓存表的格式是资源文件(Resource File,RCFile)格式,缓存表的各列的内容是匹配子树的计算逻辑的优化逻辑结果的内容,这样在SQL程序对应的语法中种包括该匹配子树的计算逻辑时,服务器便可以直接从第二缓存表中扫描该计算结果,而无须重新对大量的源数据进行计算。第二缓存表MySQL格式的缓存表,其中保存了匹配子树对应的计算逻辑,如匹配子树对应的SQL语句。
步骤103,根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。
在对优化SQL程序进行计算时,运算到优化SQL程序中的匹配子树对应的计算逻辑的优化逻辑结果时,可以直接访问第一缓存表中的优化逻辑结果的内容。
根据优化逻辑结果的内容,按照正常的SQL程序的计算方法,即可完成对优化SQL程序的计算,从而完成对原始SQL程序的计算。
本申请实施例通过服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。由此提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。
在一个优选的实施例中,如图1所示,在步骤101之后,还包括:
步骤104,根据所述SQL程序的标识信息,在所述优化数据库中不能获取到所述标识信息对应的优化SQL程序时,对所述原始SQL程序进行计算。
具体地,如果服务器不能在优化数据库中找到要计算的原始SQL程序的对应的优化SQL程序,则可以按照正常的计算方法对该程序进行计算。
在另一个优选的实施例中,如图1所示,在步骤102之前,还包括:
步骤104,对原始数据库中的所有原始SQL程序进行优化处理得到所述优化SQL程序,并将所述优化SQL程序保存在所述优化数据库中。
具体地,在对原始SQL程序进行计算之前,在离线情况下,可对原始数据库中的所有原始SQL程序进行优化处理,如果原始SQL程序可以进行优化,则可得到优化SQL程序,并保存在优化数据库中,否则不能得到优化SQL程序。
上述实施例描述了服务器对原始SQL程序进行计算的方法,下面的实施例介绍对原始SQL程序进行优化调整得到优化SQL程序的方法。如图2所示,其为本申请实施例提供的一种SQL程序的调整方法流程图。该实施例的执行主体是服务器,其中详细描述了服务器对原始SQL程序进行分解和重组的优化处理得到优化SQL程序的过程。本申请实施例具体包括以下步骤:
步骤201,使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
使用语法解析器,如Antlr可以对每个SQL程序进行分解,分解到最小的粒度,然后按照每个粒度之间的语法关系进行组装,得到一个语法树。
例如,数据库中的源数据表包括表r_seller、表s_child_user等。其中表r_seller中包括列pt、列user_id、列nick等,而表s_child_user包括pt列、列LOGIN_ID等。
对于SQL程序1:
以及SQL程序2:
使用语法解析器对SQL程序1按照最小的粒度进行拆分处理,并组装得到如图3(a)所示的语法树,使用语法解析器对SQL程序2按照最小的粒度进行拆分处理,并组装得到如图3(b)所示的语法树。由于使用语法解析器解析SQL程序为现有技术,在此不再赘述。
得到原始SQL程序的树结构后,可以将该树结构按照SQL程序的标识信息保存在树结构数据库中。当然了,也可以不对树结构进行保存。
步骤202,对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
如图3(a)和图3(b)所示,从相同的叶节点开始匹配,即从r_seller、pt、=、′20111015′开始,向上匹配,节点from、*、where也相同,再向上追溯,节点select也相同,再向上便找不到相同的节点,因此,图3(a)所示的语法树和图3(b)所示的语法树的最大的匹配子树如图3(c)所示。其中,图3(a)中的alias a是表a的别名,图3(b)中的alias b是表c的别名。
步骤203,将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
匹配的最大子树的计算逻辑的优化逻辑结果为:
tmp_excal_table_20120218_9039e154661ed8fdefc368c2692a6f24a
具体地,可以将该优化逻辑结果保存在第二缓存表中。而对于该优化逻辑结果所对应的内容则保存在第一缓存表中。
步骤204,使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
使用所述第二缓存表中保存的所述优化逻辑结果替换原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序的具体操作为:
使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。
具体地,服务器可以从树结构数据库中读取图3(a)所示的SQL程序1的树结构,也可对对原始SQL程序1进行拆分到最小粒度。对可以优化的子树进行替换,替换为计算逻辑,如将select*from r_seller where pt=′20111015′替换为:
tmp_exca l_table_20120218_9039e154661ed8fdefc368c2692a6f24a。
然后对原始SQL程序1的优化分支向上扫描,如果树结构中所有对优化分支的操作,转换为,
对tmp_excal_table_20120218_9039e154661ed8fdefc368c2692a6f24a的操作,由此得到优化SQL程序,如下所示:
服务器得到优化SQL程序后,可将优化SQL程序和原始SQL程序都按照同一个标识信息保存在优化数据库中。
由此,本申请实施例,通过上述步骤对原始SQL程序进行优化处理,得到了优化SQL程序,在服务器需要对原始SQL程序进行计算时,可以直接在优化数据库中获取优化SQL程序,减少了工作量,提高了工作效率。
相应地,本申请实施例还提供了一种服务器。如图4所示,其为本申请实施例提供的一种服务器的示意图。如图4所示,本服务器包括以下单元:
获取单元401,用于服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
提取单元402,用于根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
计算单元403,用于根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。
优选地,计算单元403还用于:根据所述SQL程序的标识信息,在所述优化数据库中不能获取到所述标识信息对应的优化SQL程序时,对所述原始SQL程序进行计算。
优选地,本申请实施例还包括:优化单元404,用于根据所述原始SQL程序的标识信息,在所述优化数据库中不能获取到所述标识信息对应的优化SQL程序时,对所述原始SQL程序进行计算。
优化单元404具体包括:拆分子单元405,用于使用语法解析器,对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;匹配子单元406,用于对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;保存子单元407,用于将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;替换子单元408,用于使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
而替换子单元408具体用于:使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。
因此,本申请实施例通过服务器获取要进行计算的原始SQL程序;根据原始SQL程序的标识信息,在优化数据库中提取标识信息对应的优化SQL程序;其中,优化SQL程序是服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。由此提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。
相应地,本申请还提供了一种服务器,如图5所示,其为本申请实施例提供的一种服务器的示意图。该服务器包括:
建树单元501,用于使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
匹配单元502,用于对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
存储单元503,用于将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
替换单元504,用于使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
替换单元504具体用于:使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。
由此,本申请实施例通过对原始SQL程序进行分解和重组,实现了服务器自动对要进行运算的原始SQL程序进行调整得到优化SQL程序,从而在服务器对原始SQL程序进行计算时可以计算优化SQL程序,提高对原始SQL程序计算的效率,以及减轻服务器对源数据的访问负担。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种结构化查询语言SQL程序的计算方法,其特征在于,所述方法包括:
服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果;
所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理具体为:
使用语法解析器,对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
2.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述获取待计算的原始SQL程序之后,还包括:根据所述原始SQL程序的标识信息,在所述优化数据库中不能获取到所述标识信息对应的优化SQL程序时,对所述原始SQL程序进行计算。
3.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述方法还包括:
将所述优化逻辑结果的内容存放于第一缓存表中。
4.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序具体为:
使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;
从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。
5.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支之前还包括:
使用语法解析器对每一条所述原始SQL程序按照最小的语法结构进行拆分处理,并且将拆分后的所有语法节点按照各个粒度之间的语法关系组装为一个语法树。
6.一种结构化查询语言SQL程序的调整方法,其特征在于,所述方法包括:
使用语法解析器对所有原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
将所述匹配的最大子树的计算逻辑的优化逻辑结果保存在第二缓存表中;
使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
7.根据权利要求6所述的结构化查询语言SQL程序的调整方法,其特征在于,所述使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序具体为:
使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;
从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。
8.根据权利要求6所述的结构化查询语言SQL程序的调整方法,其特征在于,所述使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支之前还包括:
使用语法解析器对每一条所述原始SQL程序按照最小的语法结构进行拆分处理,并且将拆分后的所有语法节点按照各个粒度之间的语法关系组装为一个语法树。
9.一种服务器,其特征在于,所述服务器包括:
获取单元,用于服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;
提取单元,用于根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;
计算单元,用于根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果;
所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理具体为:
使用语法解析器,对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;
使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
10.一种服务器,其特征在于,所述服务器包括:
建树单元,用于使用语法解析器对所有原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;
匹配单元,用于对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;
存储单元,用于将所述匹配的最大子树的计算逻辑的优化逻辑结果保存在第二缓存表中;
替换单元,用于使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210392343.8A CN103729379B (zh) | 2012-10-16 | 2012-10-16 | 结构化查询语言程序的计算方法、调整方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210392343.8A CN103729379B (zh) | 2012-10-16 | 2012-10-16 | 结构化查询语言程序的计算方法、调整方法和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103729379A CN103729379A (zh) | 2014-04-16 |
CN103729379B true CN103729379B (zh) | 2017-08-25 |
Family
ID=50453457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210392343.8A Active CN103729379B (zh) | 2012-10-16 | 2012-10-16 | 结构化查询语言程序的计算方法、调整方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103729379B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388646A (zh) * | 2018-02-28 | 2018-08-10 | 弘成科技发展有限公司 | 一种能够保证sql完整性且能动态变动的方法 |
CN111563101B (zh) * | 2020-07-11 | 2020-12-29 | 阿里云计算有限公司 | 执行计划优化方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192A (zh) * | 2007-11-16 | 2009-05-20 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844608B2 (en) * | 2006-12-15 | 2010-11-30 | Yahoo! Inc. | Clustered query support for a database query engine |
US8560523B2 (en) * | 2008-06-26 | 2013-10-15 | Microsoft Corporation | View matching of materialized XML views |
CN102541884B (zh) * | 2010-12-10 | 2014-07-02 | ***通信集团贵州有限公司 | 数据库优化方法和装置 |
CN102609493B (zh) * | 2012-01-20 | 2014-07-02 | 东华大学 | 一种基于列存储模型的连接顺序查询优化方法 |
-
2012
- 2012-10-16 CN CN201210392343.8A patent/CN103729379B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192A (zh) * | 2007-11-16 | 2009-05-20 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
Non-Patent Citations (3)
Title |
---|
SQL程序结构相似匹配及自动评估方法研究;刘玲;《万方学位论文全文数据库》;20100827;全文 * |
基于依赖树的XML数据查询优化与处理方法研究;李缨;《煤炭技术》;20110228;第30卷(第2期);全文 * |
数据库查询优化技术研究及其应用;刘亚欣;《中国优秀硕士论文全文数据库(电子期刊)》;20070215(第2期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103729379A (zh) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105447099B (zh) | 日志结构化信息提取方法及装置 | |
Bornmann et al. | BRICS countries and scientific excellence: A bibliometric analysis of most frequently cited papers | |
CN105138592B (zh) | 一种基于分布式架构的日志数据存储和检索方法 | |
CN106372176B (zh) | 一种支持对嵌套文档进行统一sql查询的方法 | |
US7834781B2 (en) | Method of constructing an approximated dynamic Huffman table for use in data compression | |
KR101859775B1 (ko) | 컴퓨터 구현 사전 시스템 및 방법 | |
US9489445B2 (en) | System and method for distributed categorization | |
Doyle et al. | Forecasting significant societal events using the embers streaming predictive analytics system | |
CN103581123B (zh) | 网络数据的处理方法及装置、网络数据的发布方法及*** | |
CN103150298A (zh) | 基于Web的流域水调业务可定制复杂表格生成方法 | |
US10924551B2 (en) | IRC-Infoid data standardization for use in a plurality of mobile applications | |
CN108984155A (zh) | 数据处理流程设定方法和装置 | |
CN108536745A (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
CN106599015A (zh) | 一种数据服务管理***及其方法 | |
CN104899312B (zh) | 一种多层分类数据体系的数据更新方法 | |
CN105630839B (zh) | 网页信息的获取方法和装置 | |
KR101166763B1 (ko) | 웹 상에서 xml 문서의 데이터를 데이터베이스에 통합하는 방법 | |
CN103593277A (zh) | 日志处理方法及*** | |
CN103729379B (zh) | 结构化查询语言程序的计算方法、调整方法和服务器 | |
CN101452456A (zh) | 数据库查询***及其方法 | |
Karapınar et al. | On Cyclic Generalized Weakly C‐Contractions on Partial Metric Spaces | |
Majed et al. | Name lookup in named data networking: A review | |
CN113568923A (zh) | 数据库中数据的查询方法和装置、存储介质及电子设备 | |
CN107436920A (zh) | Node.js权限控制方法、存储介质、电子设备及*** | |
CN104317935B (zh) | 一种xml账单文件批量生成html页面的方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |