CN105224690A - 生成并选择对应含参语句的执行计划的方法及系统 - Google Patents
生成并选择对应含参语句的执行计划的方法及系统 Download PDFInfo
- Publication number
- CN105224690A CN105224690A CN201510727523.0A CN201510727523A CN105224690A CN 105224690 A CN105224690 A CN 105224690A CN 201510727523 A CN201510727523 A CN 201510727523A CN 105224690 A CN105224690 A CN 105224690A
- Authority
- CN
- China
- Prior art keywords
- statement
- selection rate
- ginseng
- numerical value
- interval
- 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.)
- Granted
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/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (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
本发明提供一种生成并选择对应含参语句的执行计划的方法及系统。根据所述生成方法,生成系统获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合;按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间,其中,当选择率区间的数量为多个时,各相邻的选择率区间之间无缝衔接;根据含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。根据选择方法,选择系统获取待执行的含参语句,从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划按照生成方法所生成的。本发明优化了生成和选择执行计划的过程。
Description
技术领域
本发明涉及数据库处理领域,尤其涉及一种生成并选择对应含参语句的执行计划的方法及系统。
背景技术
含有参数的SQL语句称为含参语句,与数据库相连的服务器(如运行数据库管理系统)经常需要处理含参语句。客户端一般将参数的内容和含参语句都发送给数据库管理系统。
处理含参语句通常有两种方式:一、不管参数值是否相同,相同的含参语句都使用相同的执行计划。此方式的优点是依靠语句匹配直接使用已经生成的执行计划,相同的含参语句只一次生成执行计划,因而降低了多次生成执行计划的性能消耗;缺点是抹杀了参数的不同值对执行计划的影响,可能导致使用的执行计划性能极差。
二、根据参数的不同值,相同的含参语句被当作不同的语句,分别生成并使用不同的执行计划。此方式的优点是充分考虑了参数的影响,使用的执行计划都具有针对性;缺点是多次的含参语句执行计划生成过程会大大降低数据库管理系统的性能。
这两种处理方式各有利弊,对参数的处理都是“一刀切”,生成或选择执行计划时要么使用参数、要么不使用参数。随着数据量的增加,两种方式都无法使数据库运行在性价比较高的位置。因此,需要一种降低含参语句获取执行计划的开销,并提升数据库管理系统处理含参语句性能的方案。
发明内容
本发明实施例提供一种生成并选择对应含参语句的执行计划的方法及系统,用于解决现有技术中执行计划的数量和运行限制服务器性能的问题。
本发明实施例采用以下技术方案:
第一方面,提供一种生成对应含参语句的执行计划的方法,包括:获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合;按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间,其中,当所述选择率区间的数量为多个时,各相邻的选择率区间之间无缝衔接;根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
优选地,预设有含参语句所能包含参数的最大数量,在获取含参语句,并从中提取各参数在相应数据表中所对应的数值集合的步骤之前,所述方法包括:判断所述待执行的含参语句中参数的数量是否大于所述最大数量;若是,则按照所述最大数量筛选所述待执行的含参语句中的参数,并从筛选后的待执行的含参语句中提取各参数在相应数据表中所对应的数值集合;若否,则从所取获取的待执行的含参语句中提取各参数在相应数据表中所对应的数值集合。
优选地,所述按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间的方式包括:将每个数值集合中各数值的重复次数作为特征值,并按照预设的聚类算法将排序后的各所述特征值进行分类;基于各所述分类中的特征值,计算各所述分类对应的选择率区间,并将每个分类中各特征值所对应的数值与相应的选择率区间相对应。
优选地,所述聚类算法包括:k-means算法。
优选地,所述基于各所述分类中的特征值,计算各所述分类对应的选择率区间的方式包括:基于依特征值顺序排列的前一分类中最大特征值、相邻于所述前一分类的后一分类中最小特征值、和各特征值的总和,计算对应各分类的选择率区间的分割值,并按照各所述分割值将[0,1]区间进行分割,以得到至少一个所述选择率区间;其中,每个所述选择率区间按顺序依次与所述排序后的分类相对应。
优选地,所述根据待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划的方式包括:根据所述待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;按照所确定的各选择率区间的组合,生成相应的执行计划。
第二方面,提供一种选择含参语句所对应的执行计划的方法,包括:获取待执行的含参语句,并从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划按照如上任一所述的生成方法所生成的。
优选地,所述从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划的方式包括:匹配剔除各参数数值后的所述待执行的含参语句与预存的历史获取的各含参语句;若匹配不成功,则按照如上任一所述的生成方法生成对应所述待执行含参语句的执行计划;若匹配成功,则根据待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;查询已生成的各执行计划中是否包含所确定的选择率区间所对应的执行计划;若是,则选取相应的执行计划;若否,则根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
第三方面,提供一种生成含参语句所对应的执行计划的系统,包括:数据库访问模块,用于获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合;选择率区间确定模块,用于按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间;其中,当所述选择率区间的数量为多个时,各相邻的选择率区间之间无缝衔接;生成模块,用于根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
第四方面,还提供一种选择含参语句所对应的执行计划的系统,包括:选取模块,用于获取待执行的含参语句,从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划按照如上所述的生成系统所生成的;执行模块,用于按照所述待执行的含参语句中各参数的数值执行所选取的执行计划。
如上所述,本发明的生成并选择对应含参语句的执行计划的方法及系统,具有以下有益效果:将含参语句中各参数所对应的每个数值集合划分成多个选择率区间,再按照选择率区间生成执行计划,能够有效减少多参数的执行计划的数量;同时,按照含参语句中各参数的数值执行不同的执行计划,有效解决了执行计划准确性低的问题;另外,限定执行计划数量,能够有效防止参数过多所导致的执行计划数量庞大,从而有效防止硬件容量被执行计划所占用;此外,在选择执行计划时,将含参语句中参数所对应的数值与相应的数值集合进行概率运算,选择涵盖所述数值所对应的概率的选择率区间,由此来确定执行计划,能够有效提高执行计划的选择准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明的选择对应含参语句的执行计划的方法的一个实施例的方法流程图。
图2是本发明的生成并选择对应含参语句的执行计划的方法的一个实施例的方法流程图。
图3是本发明的生成对应含参语句的执行计划的方法中的又一个实施例的方法流程图。
图4是本发明的选择对应含参语句的执行计划的系统的一个实施例的结构方框图。
图5是本发明的生成并选择对应含参语句的执行计划的系统的一个实施例的结构方框图。
图6是本发明的生成对应含参语句的执行计划的系统的又一个实施例的结构方框图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下述即将描述的生成系统和选择系统可同时安装在与数据库相连的服务器中。所述服务器即为运行数据库管理系统的服务器。所述生成系统根据所述选择系统的调用指令来启动执行,并将所生成的执行计划反馈给选择系统,以供其执行和缓存。在此,所述服务器可通过互联网与其他类型的服务器、用户设备和移动设备中的至少一种通信连接。所述服务器中包括缓存单元、与所述缓存单元高速读写连接的处理单元等。所述服务器可通过互联网获取其他服务器或设备发送的待执行的含参语句。
在此,所述生成方法主要由所述生成系统来执行。所述选择方法主要由所述选择系统来执行。下面将从选择方法开始描述在服务器运行期间各系统的执行过程。
如图1所示,在步骤S31中,所述选择系统获取待执行的含参语句,并从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划的生成方式将在后续详细描述。
在此,所述选择系统预存有各含参语句,及所对应的执行计划、和无缝隙衔接的选择率区间。其中,各所述选择率区间是通过所述生成系统生成的,将在后续进行详述。
具体地,所述选择系统按照预设的概率算法计算各参数所对应的数值在相应数据集合中的概率。其中,所述概率算法包括但不限于:等高算法、出现频率算法等。接着,所述选择系统确定所得到的概率所落入的选择率区间。若所述待执行的含参语句中仅包含一个参数,则根据所确定的选择区间选择相应的执行计划。若所述待执行的含参语句中包含多个参数,则根据各参数分别确定的选择区间的组合选择相应的执行计划。
在此,所述选择系统所匹配的含参语句所对应的执行计划并非只有一个。相匹配的含参语句所对应的执行计划也并非一定适于执行。故所述步骤S31包括:步骤S311-S313。如图2所示。
在步骤S311中,所述选择系统匹配剔除各参数数值后的所述待执行的含参语句与预存的历史获取的各含参语句,若匹配不成功,则启动生成系统来执行步骤S21-S23,若匹配成功,则执行步骤S312。
在此,所述选择系统所匹配的待执行的含参语句与预存的历史获取的各含参语句的方式,采用了整句的无数值的匹配。例如,所获取的待执行的含参语句为“selectidfromtwherepid=1”,所述选择系统将剔除参数所对应的数值的含参语句与预存的各含参语句进行匹配,即将“selectidfromtwherepid=?”与预存的各含参语句进行匹配。若匹配不成功,则启动生成系统来执行步骤S21-S23,若匹配成功,则执行步骤S312。
在步骤S312中,所述选择系统根据待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间。
在步骤S313中,所述选择系统查询已生成的各执行计划中是否包含所确定的选择率区间所对应的执行计划,若是,则选取相应的执行计划,并执行步骤S32;反之,启动生成系统来执行步骤S23。
以“selectidfromtwherepid=1”含参语句为例。所述选择系统通过遍历数据表t的pid列中的数值集合:
{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}
得到数值为1的重复次数为8,数值集合中各数值重复次数总和为(1+2+3+4+5+8+10)=33。则所述选择系统按照公式确定所述含参语句的参数pid的数值1落入预设的选择率区间(18/99,1],选择选择率区间为(18/99,1]所对应的执行计划,并予以执行。
在此,选择率区间(18/99,1]及所对应的执行计划的生成过程将在后续步骤S21-S23中详述。
在步骤S32中,所述选择系统按照所述待执行的含参语句中各参数的数值执行所选取的执行计划。
在此,所述选择系统执行所述执行计划为现有技术,在此不再详述。
当所述选择系统启动生成系统执行步骤S21-S23时,所述选择系统将所述待执行的含参语句提供给所述生成系统。
在步骤S21中,所述生成系统获取所述待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合。在此,所述数值集合是指在相应数据表中以参数为名称的列中所记录的所有数值,所述数值并非一定为数字,也可以包含字符、字母、文字、数字等。
在此,所述待执行的含参语句与所要读写的数据库的类型相关,其语句中包含需在数据库中进行筛选的至少一个参数。例如,在“selectidfromtwherepid=1”的语句中,pid为参数,1为pid所对应的数值。所述待执行的含参语句中的参数可以为一个,也可以为多个。
所述生成系统根据所获取的待执行的含参语句中数据表名称、参数等从数据库中获取各参数所对应的数值集合。
仍以“selectidfromtwherepid=1”语句为例,所述生成系统从数据表t中的pid列提取到的数据集合为
{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}的整数数值。
需要说明的是,若待执行的含参语句中包含多个参数,所述生成系统获取到数据表中对应各所述参数的各数据集合。
接着,在步骤S22中,所述生成系统按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间。其中,所述选择率区间是指在选择执行指令时,待执行的含参语句中参数所对应的数值落入相应区间的概率。
具体地,所述生成系统可以计算每个数据集合中数值的重复次数进行从小到大的排序,并按照预设的选择率区间的数量,将所得到的重复次数平均的分配给各选择区间。
优选地,所述步骤S22包括:步骤S221、S222。(均未予图示)
在步骤S221中,所述生成系统将每个数值集合中各数值的重复次数作为特征值,并按照预设的聚类算法将排序后的各所述特征值进行分类。在此,所述聚类算法包括但不限于:k-means算法等。
继续步骤S21中的示例,所述生成系统得到对应参数pid的数据集合{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}中{数值,重复次数}对,即:{5,1},{4,2},{8,3},{19,4},{3,5},{1,8},{0,10}。在此,{1,2,3,4,5,8,10}为特征值。所述生成系统将各所述特征值由小到大进行排序。接着,所述生成系统按照k-means算法对各特征值进行分类。
在此,所述生成系统按照k-means算法对各特征值进行分类的方式具体如下:
1)扫描各所述特征值,为待聚类的特征值分配K个聚类中心;
2)再次扫描特征值,将每个特征值聚类到最小距离的聚类中;
3)重新计算聚类中心,重复步骤2)直到聚类结束。本实施例中,所述生成系统得到3个分类{{1,2},{3,4,5},{8,10}}。所述生成系统能够确定分类{1,2}和{3,4,5}之间无缝隙,但是分类{3,4,5}和{8,10}之间有缝隙。
在步骤S222中,所述生成系统基于各所述分类中的特征值,计算各所述分类对应的选择率区间,并将每个分类中各特征值所对应的数值与相应的选择率区间相对应;其中,各选择率区间的组合构成[0,1]区间,且各选择率区间之间无缝衔接。
具体地,预设缝隙因子M为1/3。所述生成系统将各分类按照特征值逐渐变化来排序,将前一分类中最大特征值Max(s-1)、相邻于所述前一分类的后一分类中最小特征值Min(s)、和各特征值的总和Total代入公式计算对应各分类的选择率区间的分割值。其中,所述s>1、且为分类序号。并按照各所述分割值将[0,1]区间进行分割,以得到至少一个所述选择率区间;其中,每个所述选择率区间按顺序依次与所述排序后的分类相对应。
本实施例中,所述生成系统按照上述公式分别得到分类{1,2},{3,4,5}之间的分割值分类{3,4,5},{8,10}之间的分割值则所述生成系统将[0,1]区间分割成[0,7/99]、(7/99,18/99]、(18/99,1]。按照分割值的顺序,所述生成系统将选择率区间[0,7/99]、(7/99,18/99]、(18/99,1]依次对应于分类{1,2}、{3,4,5}、{8,10},并以所述分类为中介,得到各选择率区间[0,7/99]、(7/99,18/99]、(18/99,1]依次对应的数值为{5,4}、{8,19,3}、{1,0}。
需要说明的是,上述示例中仅包含一个参数。对于包含多个参数的语句,每个参数所对应的数据集合均按步骤S22确定相应的选择率区间。
在此,所述生成系统将所述待执行的含参语句中所有参数所对应的列值的选择率区间保存在缓存中,以便所述选择系统再次获取到待执行的含参语句时,通过执行步骤S312确定相应数值所落入的选择率区间。
接着,在步骤S23中,所述生成系统根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
在此,所述生成系统根据当前待执行的含参语句中所有参数所对应的数值的选择率区间,生成执行计划。
具体地,所述生成系统根据所述待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;按照所确定的各选择率区间的组合,生成相应的执行计划。
仍以“selectidfromtwherepid=1”含参语句为例。所述生成系统通过遍历数据表t的pid列中的数值集合,得到数值为1的重复次数为8,数值集合中各数值重复次数总和为(1+2+3+4+5+8+10)=33。则所述生成系统按照公式确定所述含参语句的参数pid=1的选择率区间为(18/99,1],并生成选择率区间为(18/99,1]所对应的一个执行计划。
其中,所述生成系统可根据所确定的选择率区间,按照现有技术在多个可能的执行计划中选择生成一个优选的执行计划。
作为一种优选方案,对于包含多个参数的语句来说,一个含参语句所生成的执行计划的数量过于庞大。这使得所述服务器的缓存单元的运行受到极大压力。为此,所述生成系统中预设有含参语句所能包含参数的最大数量。在进行执行步骤S21和S22之前,所述生成系统先执行如下步骤S11、S12,以进行预处理。如图3所示。
在步骤S11中,所述生成系统判断所述含参语句中的参数的数量是否大于所述最大数量,若是,则执行步骤S12,若否,则执行步骤S21。
在步骤S12中,所述生成系统按照所述最大数量筛选所述含参语句中的参数,并从筛选后的含参语句中提取各参数在相应数据表中所对应的数值集合。
具体地,所述生成系统可按照所述含参语句中参数的前后顺序,选择所述最大数量的参数,忽略其他参数,并按照所选择的参数执行步骤S21。
例如,预设的参数的最大数量为a,所述生成系统判断所获取的含参语句中的参数数量b大于a,则标记前a个参数,并将标记了前a个参数的含参语句输至步骤S21。所述生成系统在执行步骤S21时,从标记了前a个参数的含参语句中提取标记的各参数在相应数据表中所对应的数值集合。接着执行步骤S22-S23。所述生成系统最终得到所获取的含参语句所对应的前a个参数的所有选择率区间、和基于前a个参数所对应的数值各自落入的选择率区间的组合所生成的执行计划。所述生成系统将所获取的含参语句、前a个参数的所有选择率区间和基于前a个参数所对应的数值各自落入的选择率区间的组合所生成的执行计划对应保存。
本发明还提供一种生成并选择对应含参语句的执行计划的系统。所述生成系统主要安装在与数据库相连的服务器中。在此,所述服务器可通过互联网与其他类型的服务器、用户设备和移动设备中的至少一种通信连接。所述服务器中包括缓存单元、与所述缓存单元高速读写连接的处理单元等。所述服务器可通过互联网获取其他服务器或设备发送的含参语句。
需要说明的是,下述即将描述的生成系统和选择系统可同时安装在与数据库相连的服务器中。所述服务器即为运行数据库管理系统的服务器。所述生成系统根据所述选择系统的调用指令来启动执行,并将所生成的执行计划反馈给选择系统,以供其执行和缓存。在此,所述服务器可通过互联网与其他类型的服务器、用户设备和移动设备中的至少一种通信连接。所述服务器中包括缓存单元、与所述缓存单元高速读写连接的处理单元等。所述服务器可通过互联网获取其他服务器或设备发送的待执行的含参语句。
如图4所示,所述选择系统包括:选取模块21和执行模块22。所述生成系统包括:数据库访问模块11、选择率区间确定模块12、生成模块13。
所述选取模块21用于获取待执行的含参语句,并从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划的生成方式将在后续详细描述。
在此,所述选取模块21预存有各含参语句,及所对应的执行计划、和无缝隙衔接的选择率区间。其中,各所述选择率区间是通过所述生成系统生成的。将在后续进行详述。
具体地,所述选取模块21按照预设的概率算法计算各参数所对应的数值在相应数据集合中的概率。其中,所述概率算法包括但不限于:等高算法、出现频率算法等。接着,所述选取模块21确定所得到的概率所落入的选择率区间。若所述待执行的含参语句中仅包含一个参数,则根据所确定的选择区间选择相应的执行计划。若所述待执行的含参语句中包含多个参数,则根据各参数分别确定的选择区间的组合选择相应的执行计划。
在此,所述选取模块21所匹配的含参语句所对应的执行计划并非只有一个。相匹配的含参语句所对应的执行计划也并非一定适于执行。故所述选取模块21包括:第一匹配子模块211、选择率区间匹配子模块212、和第二匹配子模块213。如图5所示。
所述第一匹配子模块211用于匹配剔除各参数数值后的所述待执行的含参语句与预存的历史获取的各含参语句,若匹配不成功,则启动生成系统,若匹配成功,则执行所述选择率区间匹配子模块212。
在此,所述第一匹配子模块211所匹配的待执行的含参语句与预存的历史获取的各含参语句的方式,采用了整句的无数值的匹配。例如,所获取的待执行的含参语句为“selectidfromtwherepid=1”,所述第一匹配子模块211将剔除参数所对应的数值的含参语句与预存的各含参语句进行匹配,即将“selectidfromtwherepid=?”与预存的各含参语句进行匹配。若匹配不成功,则启动执行所述生成系统中的数据库访问模块11,若匹配成功,则执行选择率区间匹配子模块212。
所述选择率区间匹配子模块212用于根据待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间。
所述第二匹配子模块213用于查询已生成的各执行计划中是否包含所确定的选择率区间所对应的执行计划,若是,则选取相应的执行计划,并执行所述执行模块22;反之,启动执行生成系统中的生成模块13。
以“selectidfromtwherepid=1”含参语句为例。所述选择率区间匹配子模块212通过遍历数据表t的pid列中的数值集合:
{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}
得到数值为1的重复次数为8,数值集合中各数值重复次数总和为(1+2+3+4+5+8+10)=33。则所述选择率区间匹配子模块212按照公式确定所述含参语句的参数pid的数值1落入预设的选择率区间(18/99,1],所述第二匹配子模块213匹配到选择率区间为(18/99,1]所对应的执行计划,并提供给所述执行模块22,以便执行。
在此,选择率区间(18/99,1]及所对应的执行计划的生成过程将在所述生成系统中详述。
所述执行模块22用于将按照所述待执行的含参语句中各参数的数值执行所选取的执行计划。
在此,所述执行模块22执行所述执行计划为现有技术,在此不再详述。
当所述选择系统启动生成系统时,所述选择系统将所述待执行的含参语句提供给所述生成系统。
所述数据库访问模块11用于获取所述待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合。在此,所述数值集合是指在相应数据表中以参数为名称的列中所记录的所有数值,所述数值并非一定为数字,也可以包含字符、字母、文字、数字等。
在此,所述待执行的含参语句与所要读写的数据库的类型相关,其语句中包含需在数据库中进行筛选的至少一个参数。例如,在“selectidfromtwherepid=1”的语句中,pid为参数,1为pid所对应的数值。所述待执行的含参语句中的参数可以为一个,也可以为多个。
所述数据库访问模块11根据所获取的待执行的含参语句中数据表名称、参数等从数据库中获取各参数所对应的数值集合。
仍以“selectidfromtwherepid=1”语句为例,所述数据库访问模块11从数据表t中的pid列提取到的数据集合为
{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}的整数数值。
需要说明的是,若待执行的含参语句中包含多个参数,所述数据库访问模块11获取到数据表中对应各所述参数的各数据集合。
接着,所述选择率区间确定模块12用于按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间。其中,所述选择率区间是指在选择执行指令时,待执行的含参语句中参数所对应的数值落入相应区间的概率。
具体地,所述选择率区间确定模块12可以计算每个数据集合中数值的重复次数进行从小到大的排序,并按照预设的选择率区间的数量,将所得到的重复次数平均的分配给各选择区间。
优选地,所述选择率区间确定模块12包括:分类子模块、选择率区间生成子模块。(均未予图示)
所述分类子模块用于将每个数值集合中各数值的重复次数作为特征值,并按照预设的聚类算法将排序后的各所述特征值进行分类。在此,所述聚类算法包括但不限于:k-means算法等。
继续数据库访问模块11中的示例,所述分类子模块得到对应参数pid的数据集合{19,0,8,1,1,8,1,8,4,4,0,5,0,19,1,3,3,1,19,0,3,19,0,0,1,1,0,0,1,3,3,0,0}中{数值,重复次数}对,即:{5,1},{4,2},{8,3},{19,4},{3,5},{1,8},{0,10}。在此,{1,2,3,4,5,8,10}为特征值。所述分类子模块将各所述特征值由小到大进行排序。接着,所述分类子模块按照k-means算法对各特征值进行分类。
在此,所述分类子模块按照k-means算法对各特征值进行分类的方式具体如下:
1)扫描各所述特征值,为待聚类的特征值分配K个聚类中心;
2)再次扫描特征值,将每个特征值聚类到最小距离的聚类中;
3)重新计算聚类中心,重复步骤2)直到聚类结束。本实施例中,所述分类子模块得到3个分类{{1,2},{3,4,5},{8,10}}。所述生成系统能够确定分类{1,2}和{3,4,5}之间无缝隙,但是分类{3,4,5}和{8,10}之间有缝隙。
所述选择率区间生成子模块用于基于各所述分类中的特征值,计算各所述分类对应的选择率区间,并将每个分类中各特征值所对应的数值与相应的选择率区间相对应;其中,各选择率区间的组合构成[0,1]区间,且各选择率区间之间无缝衔接。
具体地,预设缝隙因子M为1/3。所述选择率区间生成子模块将各分类按照特征值逐渐变化来排序,将前一分类中最大特征值Max(s-1)、相邻于所述前一分类的后一分类中最小特征值Min(s)、和各特征值的总和Total代入公式计算对应各分类的选择率区间的分割值。其中,所述s>1、且为分类序号。并按照各所述分割值将[0,1]区间进行分割,以得到至少一个所述选择率区间;其中,每个所述选择率区间按顺序依次与所述排序后的分类相对应。
本实施例中,所述选择率区间生成子模块按照上述公式分别得到分类{1,2},{3,4,5}之间的分割值分类{3,4,5},{8,10}之间的分割值则所述选择率区间生成子模块将[0,1]区间分割成[0,7/99]、(7/99,18/99]、(18/99,1]。按照分割值的顺序,所述选择率区间生成子模块将选择率区间[0,7/99]、(7/99,18/99]、(18/99,1]依次对应于分类{1,2}、{3,4,5}、{8,10},并以所述分类为中介,得到各选择率区间[0,7/99]、(7/99,18/99]、(18/99,1]依次对应的数值为{5,4}、{8,19,3}、{1,0}。
需要说明的是,上述示例中仅包含一个参数。对于包含多个参数的语句,每个参数所对应的数据集合均按所述选择率区间确定模块12确定相应的选择率区间。
在此,所述选择率区间确定模块12将所述待执行的含参语句中所有参数所对应的数值的选择率区间保存在缓存中,以便所述选择系统中的第一匹配子模块211再次获取到待执行的含参语句时,所述选择率区间匹配子模块212确定相应数值所落入的选择率区间。
接着,所述生成模块13用于根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
在此,所述生成模块13根据当前待执行的含参语句中所有参数所对应的数值的选择率区间,生成执行计划。
具体地,所述生成模块13根据所述待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;按照所确定的各选择率区间的组合,生成相应的执行计划。
仍以“selectidfromtwherepid=1”含参语句为例。所述生成模块13通过遍历数据表t的pid列中的数值集合,得到数值为1的重复次数为8,数值集合中各数值重复次数总和为(1+2+3+4+5+8+10)=33。则所述生成模块13按照公式确定所述含参语句的参数pid=1的选择率区间为(18/99,1],并生成选择率区间为(18/99,1]所对应的一个执行计划。
其中,所述生成模块13可根据所确定的选择率区间,按照现有技术在多个可能的执行计划中选择生成一个优选的执行计划。
作为一种优选方案,对于包含多个参数的语句来说,一个含参语句所生成的执行计划的数量过于庞大。这使得所述服务器的缓存单元的运行受到极大压力。为此,所述生成系统中预设有含参语句所能包含参数的最大数量。在执行数据库访问模块11之前,所述生成系统先执行其中的预处理模块14,以进行预处理。如图6所示。
所述预处理模块14用于判断所述含参语句中的参数的数量是否大于所述最大数量,若是,则按照所述最大数量筛选所述含参语句中的参数,并将筛选后的含参语句输至所述数据库访问模块11,若否,则执行所述数据库访问模块11。
具体地,所述预处理模块14可按照所述含参语句中参数的前后顺序,选择所述最大数量的参数,忽略其他参数,并按照所选择的参数启动所述数据库访问模块11。
例如,预设的参数的最大数量为a,所述预处理模块14判断所获取的含参语句中的参数数量b大于a,则标记前a个参数,并将标记了前a个参数的含参语句输至步骤S21。所述数据库访问模块11从标记了前a个参数的含参语句中提取标记的各参数在相应数据表中所对应的数值集合。接着执行选择率区间确定模块12和生成模块13。所述生成系统最终得到所获取的含参语句所对应的前a个参数的所有选择率区间、和基于前a个参数所对应的数值各自落入的选择率区间的组合所生成的执行计划。所述生成系统将所获取的含参语句、前a个参数的所有选择率区间和基于前a个参数所对应的数值各自落入的选择率区间的组合所生成的执行计划对应保存,以供所述选择系统来使用。
综上所述,本发明的生成并选择对应含参语句的执行计划的方法及系统,通过将含参语句中各参数所对应的每个数值集合划分成多个选择率区间,再按照选择率区间生成执行计划,能够有效减少多参数的执行计划的数量;同时,按照含参语句中各参数的数值执行不同的执行计划,有效解决了执行计划准确性低的问题。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种生成对应含参语句的执行计划的方法,其特征在于,包括:
获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合;
按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间;其中,当所述选择率区间的数量为多个时,各相邻的选择率区间之间无缝衔接;
根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
2.根据权利要求1所述的生成对应含参语句的执行计划的方法,其特征在于,预设有待执行的含参语句所能包含参数的最大数量,在获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合的步骤之前,所述方法包括:
判断所述待执行的含参语句中参数的数量是否大于所述最大数量;
若是,则按照所述最大数量筛选所述待执行的含参语句中的参数,并从筛选后的待执行的含参语句中提取各参数在相应数据表中所对应的数值集合;
若否,则从所取获取的待执行的待执行的含参语句中提取各参数在相应数据表中所对应的数值集合。
3.根据权利要求1或2所述的生成对应含参语句的执行计划的方法,其特征在于,所述按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间的方式包括:
将每个数值集合中各数值的重复次数作为特征值,并按照预设的聚类算法将排序后的各所述特征值进行分类;
基于各所述分类中的特征值,计算各所述分类对应的选择率区间,并将每个分类中各特征值所对应的数值与相应的选择率区间相对应。
4.根据权利要求3所述的生成对应含参语句的执行计划的方法,其特征在于,所述聚类算法包括:k-means算法。
5.根据权利要求3所述的生成对应含参语句的执行计划的方法,其特征在于,所述基于各所述分类中的特征值,计算各所述分类对应的选择率区间的方式包括:
基于依特征值顺序排列的前一分类中最大特征值、相邻于所述前一分类的后一分类中最小特征值、和各特征值的总和,计算对应各分类的选择率区间的分割值,并按照各所述分割值将[0,1]区间进行分割,以得到至少一个所述选择率区间;其中,每个所述选择率区间按顺序依次与所述排序后的分类相对应。
6.根据权利要求1所述的生成对应含参语句的执行计划的方法,其特征在于,所述根据待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划的方式包括:
根据所述待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;
按照所确定的各选择率区间的组合,生成相应的执行计划。
7.一种选择含参语句所对应的执行计划的方法,其特征在于,包括:
获取待执行的含参语句,并从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划按照如权利要求1-6中任一所述的生成方法所生成的;
按照所述待执行的含参语句中各参数的数值执行所选取的执行计划。
8.根据权利要求7所述的选择含参语句所对应的执行计划的方法,其特征在于,所述从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划的方式包括:
匹配剔除各参数数值后的所述待执行的含参语句与预存的历史获取的各含参语句;
若匹配不成功,则按照如权利要求1-6中任一所述的生成方法生成对应所述待执行含参语句的执行计划;
若匹配成功,则根据待执行的含参语句中各参数所对应数值的重复次数占相应数值集合中各数值总和的比例,确定包含相应比例的选择率区间;
查询已生成的各执行计划中是否包含所确定的选择率区间所对应的执行计划;
若是,则选取相应的执行计划;
若否,则根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
9.一种生成含参语句所对应的执行计划的系统,其特征在于,包括:
数据库访问模块,用于获取待执行的含参语句,并从中提取各参数在相应数据表中所对应的数值集合;
选择率区间确定模块,用于按照每个数值集合中数值的重复次数,设定相应数据集合中各数值所对应的选择率区间;其中,当所述选择率区间的数量为多个时,各相邻的选择率区间之间无缝衔接;
生成模块,用于根据所述待执行的含参语句中各参数所对应的数值所落入的选择率区间,生成相应的执行计划。
10.一种选择含参语句所对应的执行计划的系统,其特征在于,包括:
选取模块,用于获取待执行的含参语句,并从预存的历史获取的各含参语句及所对应的选择率区间、执行计划中,选取含参语句和选择率区间均匹配的执行计划;其中,所述选择率区间和执行计划按照如权利要求9中任一所述的生成系统所生成的;
执行模块,用于按照所述待执行的含参语句中各参数的数值执行所选取的执行计划。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727523.0A CN105224690B (zh) | 2015-10-30 | 2015-10-30 | 生成并选择对应含参语句的执行计划的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727523.0A CN105224690B (zh) | 2015-10-30 | 2015-10-30 | 生成并选择对应含参语句的执行计划的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224690A true CN105224690A (zh) | 2016-01-06 |
CN105224690B CN105224690B (zh) | 2019-06-18 |
Family
ID=54993658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510727523.0A Active CN105224690B (zh) | 2015-10-30 | 2015-10-30 | 生成并选择对应含参语句的执行计划的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224690B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN108763536A (zh) * | 2018-05-31 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN109063170A (zh) * | 2018-08-17 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 智能查询方法、装置、终端和计算机可读存储介质 |
CN109240901A (zh) * | 2018-08-28 | 2019-01-18 | 北京小度信息科技有限公司 | 性能分析方法、性能分析装置、存储介质和电子设备 |
CN113076332A (zh) * | 2021-03-25 | 2021-07-06 | 东北大学 | 一种数据库预编译查询语句的执行方法 |
CN115630087A (zh) * | 2022-12-23 | 2023-01-20 | 金篆信科有限责任公司 | 数据库语句的执行计划确定方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136247A (zh) * | 2011-11-29 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 属性数据区间划分方法及装置 |
CN103309984A (zh) * | 2013-06-17 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 数据处理的方法和装置 |
CN104462443A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据处理方法和装置 |
-
2015
- 2015-10-30 CN CN201510727523.0A patent/CN105224690B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136247A (zh) * | 2011-11-29 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 属性数据区间划分方法及装置 |
CN103309984A (zh) * | 2013-06-17 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 数据处理的方法和装置 |
CN104462443A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据处理方法和装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN108763536A (zh) * | 2018-05-31 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN108763536B (zh) * | 2018-05-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
US11080278B2 (en) | 2018-05-31 | 2021-08-03 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Database query plan selection |
US11243950B2 (en) | 2018-05-31 | 2022-02-08 | Beijing Oceanbase Technology Co., Ltd. | Database query plan selection |
CN109063170A (zh) * | 2018-08-17 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 智能查询方法、装置、终端和计算机可读存储介质 |
CN109063170B (zh) * | 2018-08-17 | 2021-07-30 | 百度在线网络技术(北京)有限公司 | 智能查询方法、装置、终端和计算机可读存储介质 |
CN109240901A (zh) * | 2018-08-28 | 2019-01-18 | 北京小度信息科技有限公司 | 性能分析方法、性能分析装置、存储介质和电子设备 |
CN113076332A (zh) * | 2021-03-25 | 2021-07-06 | 东北大学 | 一种数据库预编译查询语句的执行方法 |
CN113076332B (zh) * | 2021-03-25 | 2023-08-01 | 东北大学 | 一种数据库预编译查询语句的执行方法 |
CN115630087A (zh) * | 2022-12-23 | 2023-01-20 | 金篆信科有限责任公司 | 数据库语句的执行计划确定方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105224690B (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105224690A (zh) | 生成并选择对应含参语句的执行计划的方法及系统 | |
CN102542474A (zh) | 查询结果排序方法及装置 | |
CN113392646A (zh) | 一种数据中台系统、构建方法及装置 | |
CN110297853A (zh) | 频繁集挖掘方法和装置 | |
CN105630827B (zh) | 一种信息处理方法、系统及辅助系统 | |
CN104991955A (zh) | 一种自动构建模板库的方法及系统 | |
CN110597796B (zh) | 基于全生命周期的大数据实时建模方法及系统 | |
CN113297250A (zh) | 一种分布式数据库多表关联查询的方法及系统 | |
CN110990372A (zh) | 一种维度数据的处理方法及装置、数据查询方法及装置 | |
CN110399395A (zh) | 基于预计算的加速查询方法、存储介质 | |
CN106028361A (zh) | 一种通信信号强度分布的查看方法、移动终端及服务器 | |
CN109885651A (zh) | 一种问题推送方法和装置 | |
CN106326462A (zh) | 一种视频索引分级方法及装置 | |
US20050010325A1 (en) | Computer-aided manufacturing system and method for sheet-metal punching | |
CN106095747A (zh) | 一种垃圾短信的识别方法和系统 | |
CN111369133A (zh) | 一种大数据风险监测系统 | |
CN100370458C (zh) | 资料整合与分析系统及方法 | |
CN109902215A (zh) | 一种交易匹配的方法及系统 | |
CN117171244A (zh) | 基于数据中台构建的企业数据管理系统及其数据分析方法 | |
CN104182546A (zh) | 数据库的数据查询方法及装置 | |
CN107315739A (zh) | 一种语义分析方法 | |
CN111698321A (zh) | 物联网设备数据同步方法、装置及控制中心 | |
CN117171296A (zh) | 信息获取方法、装置和电子设备 | |
CN112559850B (zh) | 关键词挖掘系统及挖掘方法 | |
CN111858324B (zh) | 一种测试案例的自动生成方法及装置 |
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 |