一种SQL语句的优化处理方法与流程
未命名
08-12
阅读:156
评论:0
一种sql语句的优化处理方法
技术领域
1.本发明涉及电数字数据处理技术领域,特别是涉及一种sql语句的优化处理方法。
背景技术:
2.具有相同执行结果的不同sql语句对应的执行效率不同,如果直接执行用户输入的sql语句,而用户输入的sql语句的执行效率较低时,服务器运行sql语句的效率较低。如何提高服务器运行sql语句的效率,是亟待解决的问题。
技术实现要素:
3.本发明目的在于,提供一种sql语句的优化处理方法,以提高服务器运行sql语句的效率。
4.根据本发明,提供了一种sql语句的优化处理方法,包括以下步骤:
5.s100,获取用户输入的sql语句a。
6.s200,对a进行解析,获取a的类型;所述类型包括数据定义类型、数据查询类型、数据操纵类型、事务控制类型或数据控制类型。
7.s300,对a进行优化改写,得到与a对应的优化改写sql语句b={b1,b2,
…
,bn},bn为与a对应的第n个优化改写sql语句,bn与a的执行结果相同,n的取值范围为1到n,n为与a对应的优化改写sql语句的数量。
8.s400,遍历b和d,如果bn满足dh,则将第一预设值赋予fn中的第h个元素;否则,将第二预设值赋予fn中的第h个元素,fn为bn对应的特征向量,fn的初始化为维数为h的向量;dh为d中第h条预设条件,d为与a的类型对应的预设条件库,d=(d1,d2,
…
,dh),h的取值范围为1到h,h为d中预设条件的数量,h与a的类型相关。
9.s500,遍历b,将fn在与a的类型对应的预设的sql样本库c中进行匹配,获取与fn匹配的样本特征向量的执行效率;c={c1,c2,
…
,cm},cm为预设的第m个sql执行环境对应的样本库,m的取值范围为1到m,m为预设的sql执行环境的数量,所述sql执行环境包括执行sql时服务器负载的大小;cm={c
m,1
,c
m,2
,
…
,c
m,q
},c
m,q
为cm中第q个样本特征向量与执行效率的对应关系,q的取值范围为1到q,q为cm包括的所述对应关系的数量;c
m,q
=(cf
m,q
,cx
m,q
),cf
m,q
为c
m,q
对应的样本特征向量,cx
m,q
为c
m,q
对应的执行效率。
10.s600,在用户界面上显示执行效率最高的匹配的样本特征向量对应的优化改写sql语句b
max
。
11.s700,如果接收到用户执行b
max
的指令,则执行b
max
。
12.本发明与现有技术相比具有明显的有益效果,借由上述技术方案,本发明提供的sql语句的优化处理方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
13.本发明在用户输入sql语句a之后,并没有直接执行用户输入的sql语句a,而是先获取了与a具有相同执行结果的多个优化改写sql语句,以及获取了各优化改写sql语句对
应的特征向量,并进一步通过在预设的sql样本库中匹配的方式得到了各优化改写sql语句对应的执行效率,最终将执行效率最高的优化改写sql语句显示在用户界面上,以由用户决定是否按照执行该效率最高的优化改写sql语句;如果收到用户执行该效率最高的优化改写sql语句的指令,则执行该效率最高的优化改写sql语句。由此,即使用户输入的sql语句的执行效率较低,本发明也能够在不改变执行结果的前提下执行效率较高的优化改写sql语句,进而提高了服务器运行sql语句的效率。
附图说明
14.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1为本发明实施例提供的sql语句的优化处理方法的流程图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.根据本发明,提供了一种sql语句的优化处理方法,包括以下步骤:
18.s100,获取用户输入的sql语句a。
19.s200,对a进行解析,获取a的类型;所述类型包括数据定义类型、数据查询类型、数据操纵类型、事务控制类型或数据控制类型。
20.应当理解的是,数据定义类型的sql语句主要用于定义逻辑结构,包括定义表、视图和索引;数据查询类型的sql语句用于对数据库中各种数据对象进行查询;数据操纵类型的sql语句用于改变数据库中的数据;事务控制类型的sql语句被用于快速原型开发、脚本编程、gui和测试等方面;数据控制类型的sql语句用来授予或回收访问数据库的某种特权,并控制数据操纵事务发生的时间及效果,对数据实行监视等。
21.本领域技术人员知悉,现有技术中任何的获取sql语句类型的方法均落入本发明的保护范围。作为一种获取sql语句类型的方法的实施例,对sql语句进行分词处理,并将得到的每个词与预设的关键字进行匹配,如果匹配的结果是sql语句只包括一种sql语句类型对应的关键字,则判定该sql语句为其包括的关键字对应的sql语句类型;如果匹配的结果是sql包括不同sql语句类型对应的关键字,则判定该sql语句为多类型sql语句。例如,一个sql语句为insert语句嵌套select语句,那么该sql语句为双类型sql语句;根据本发明,insert为数据操纵类型对应的关键字,select为数据查询类型对应的关键字,因此,上述双类型指的是数据操纵类型和数据查询类型。本发明中预设的关键字包括create、select、insert、delete、drop和alter等,预设的关键字用于区分sql语句的类型,因此,优选的预设的关键词为每类sql语句独有的词。
22.s300,对a进行优化改写,得到与a对应的优化改写sql语句b={b1,b2,
…
,bn},bn为
与a对应的第n个优化改写sql语句,bn与a的执行结果相同,n的取值范围为1到n,n为与a对应的优化改写sql语句的数量。
23.本领域技术人员知悉,现有技术中任何的自动优化改写方法均落入本发明的保护范围。可选的,通过soar实现对用户输入的sql语句的优化改写。
24.s400,遍历b和d,如果bn满足dh,则将第一预设值赋予fn中的第h个元素;否则,将第二预设值赋予fn中的第h个元素,fn为bn对应的特征向量,fn的初始化为维数为h的向量;dh为d中第h条预设条件,d为与a的类型对应的预设条件库,d=(d1,d2,
…
,dh),h的取值范围为1到h,h为d中预设条件的数量,h与a的类型相关。
25.根据本发明,同一执行结果对应多种不同表达方式的sql语句,现有技术中已经公开了影响sql语句执行效率的情况,也可以理解为现有技术中已经公开了高执行效率对应的一些sql撰写建议,例如,不建议使用前项通配符查找等。根据现有技术中公开的一些建议,可以预先构这些建议对应的条件,进而得到由这些建议对应的条件构成的条件库,作为一种具体实施方式,上述“不建议使用前项通配符查找”的建议对应的条件为:未使用前项通配符查找。
26.根据本发明,不同类型的sql语句对应的条件库存在不同(包括条件库中预设条件数量的不同和/或预设条件内容的不同),需预先构建各类型对应的条件库。作为一种具体实施方式,数据查询类sql语句用于对数据库中各种数据对象进行查询,可将上述“未使用前项通配符查找”的条件作为数据查询类型sql语句对应的条件库中的一个条件。需要说明的是,由于sql语句可能为多类型sql语句,因此,本发明预先构建的条件库除了包括单类型的条件库之外,还应包括多类型sql语句对应的条件库,例如,考虑到sql语句可能为数据操纵类型和数据查询类型的双类型sql语句,构建对应于数据操纵类型和数据查询类型的双类型sql语句的条件库,可选的,该双类型条件库既包括数据操纵类型和数据查询类型对应的条件,还包括将数据操作类型子sql语句和数据查询类型子sql语句嵌套在一个sql语句中时应满足的条件。
27.本领域技术人员知晓,根据现有技术中任何的sql优化建议构建的条件库均落入本发明的保护范围。
28.作为一种具体实施方式,第一预设值为1,第二预设值为0,h为5,即d中预设条件的数量为5,fn的初始化为(0,0,0,0,0);当fn满足d中的第1个和第2个预设条件时,遍历d之后得到的fn为(1,1,0,0,0);当fn满足d中的第1个、第3个和第4个预设条件时,遍历d之后得到的fn为(1,0,1,1,0);当fn满足d中全部的预设条件时,遍历d之后得到的fn为(1,1,1,1,1)。本领域技术人员知悉,任何的第一预设值、第二预设值和初始化的fn均落入本发明的保护范围。
29.s500,遍历b,将fn在与a的类型对应的预设的sql样本库c中进行匹配,获取与fn匹配的样本特征向量的执行效率;c={c1,c2,
…
,cm},cm为预设的第m个sql执行环境对应的样本库,m的取值范围为1到m,m为预设的sql执行环境的数量,所述sql执行环境包括执行sql时服务器负载的大小;cm={c
m,1
,c
m,2
,
…
,c
m,q
},c
m,q
为cm中第q个样本特征向量与执行效率的对应关系,q的取值范围为1到q,q为cm包括的所述对应关系的数量;c
m,q
=(cf
m,q
,cx
m,q
),cf
m,q
为c
m,q
对应的样本特征向量,cx
m,q
为c
m,q
对应的执行效率。
30.根据本发明,将fn在与a的类型对应的预设的sql样本库c中进行匹配,获取与fn匹
配的样本特征向量的执行效率包括:
31.s510,获取当前的sql执行环境。
32.本领域技术人员知悉,将现有技术中任何的影响sql执行效率的外部因素作为sql执行环境的技术方案均落入本发明的保护范围。
33.s520,获取c中与当前的sql执行环境差异最小的执行环境对应的样本库。
34.根据本发明,不同执行环境下同一sql语句的执行效率存在差异;本发明预先构建了不同执行环境下的sql样本库,将fn在执行环境差异最小的样本库中进行比对,可避免执行环境不同对sql执行效率预判带来的影响。
35.根据本发明,如果执行环境只包括执行sql时服务器负载的大小,则通过计算差值的方法获取c中与当前的sql执行环境差异最小的执行环境对应的样本库,应当理解的是,差值的绝对值越小,差异越小;如果执行环境除了包括执行sql时服务器负载的大小之外,还包括其他的因素,则根据执行环境包括的所有因素构建向量(向量中各元素为各因素对应的值),然后通过计算余弦相似度的方法获取c中与当前的sql执行环境差异最小的执行环境对应的样本库,应当理解的是,余弦相似度越大,差异越小。
36.s530,获取所述差异最小的样本库中与fn差异最小的样本特征向量。
37.可选的,使用余弦相似度方法获取所述差异最小的样本库中与fn差异最小的样本特征向量,应当理解的是,余弦相似度最大的样本特征向量与fn的差异最小。本领域技术人员知悉,现有技术中任何的获取两向量的相似度的方法均落入本发明的保护范围。
38.s540,将所述差异最小的样本特征向量对应的执行效率作为与fn匹配的样本特征向量的执行效率。
39.根据本发明,样本库中与fn差异最小的样本特征向量与fn在是否满足预设条件方面最为相似,而是否满足预设条件是影响sql的执行效率的关键因素,因此,样本库中与fn差异最小的样本特征向量对应的执行效率能够表征fn的执行效率。
40.s600,在用户界面上显示执行效率最高的匹配的样本特征向量对应的优化改写sql语句b
max
。
41.应当理解的是,每个fn都对应一个匹配的样本特征向量,n的取值范围为1到n,那么遍历b之后共获取n个匹配的样本特征向量,b
max
即这n个匹配的样本特征向量中执行效率最高的样本特征向量对应的优化改写sql语句。作为一个实施例,这n个匹配的样本特征向量中与f1匹配的样本特征向量的执行效率最高,那么b
max
即b1。
42.可选的,在用户界面上还显示执行b
max
的选择按钮和不执行b
max
的选择按钮,由用户通过点击执行b
max
的选择按钮或不执行b
max
的选择按钮的方式获取用户是否执行b
max
的意图,如果用户点击不执行b
max
的选择按钮,则判定用户选择执行用户输入的sql语句a。
43.s700,如果接收到用户执行b
max
的指令,则执行b
max
。
44.根据本发明,如果接收到用户执行b
max
的指令,还获取b
max
对应的实际执行效率,并根据b
max
对应的实际执行效率对目标sql样本库中目标样本特征向量的执行效率进行更新,所述目标sql样本库为c中与当前的sql执行环境差异最小的执行环境对应的样本库,所述目标样本特征向量为与fn相等的样本特征向量。
45.优选的,根据b
max
对应的实际执行效率对目标sql样本库中目标样本特征向量的执行效率进行更新,包括:
46.s710,如果目标sql样本库中存在目标样本特征向量,则获取第一执行效率差异值δe,δe=|e
1-e2|,e1为b
max
对应的实际执行效率,e2为sql样本库中b
max
对应的样本特征向量的执行效率。
47.应当理解的是,sql的执行效率与sql的执行时间负相关,sql的执行时间越长,对应的执行效率越低。本领域技术人员知悉,现有技术中任何的执行效率获取方法均落入本发明的保护范围。
48.s720,获取第二执行效率差异e’,e’=δe/e2。
49.s730,如果e’小于等于预设执行效率阈值,则更新目标sql样本库中目标样本特征向量的执行效率为(k1*e1+k2*e2),k1为第一权重,k2为第二权重,0《k1《k2《1,k1+k2=1。
50.根据本发明,如果目标sql样本库中不存在目标样本特征向量,则将fn与e1的对应关系(fn,e1)增加至目标sql样本库。由此,本发明实现了对目标sql样本库的扩充,提高了目标sql样本库中执行效率的准确性。
51.根据本发明,正常情况下的e’满足小于等于预设执行效率阈值的条件,可基于b
max
对应的实际执行效率对目标样本库中目标样本特征向量的执行效率进行修正。如果e’大于预设执行效率阈值,则不更新目标sql样本库;由此可避免执行b
max
过程中偶然因素对修正目标样本库产生的不良影响,提高了目标sql样本库中执行效率的准确性。
52.可选的,k1=0.1,k2=0.9,预设执行效率阈值为10%。
53.本发明在用户输入sql语句a之后,并没有直接执行用户输入的sql语句a,而是先获取了与a具有相同执行结果的多个优化改写sql语句,以及获取了各优化改写sql语句对应的特征向量,并进一步通过在预设的sql样本库中匹配的方式得到了各优化改写sql语句对应的执行效率,最终将执行效率最高的优化改写sql语句显示在用户界面上,以由用户决定是否按照执行该效率最高的优化改写sql语句;如果收到用户执行该效率最高的优化改写sql语句的指令,则执行该效率最高的优化改写sql语句。由此,即使用户输入的sql语句的执行效率较低,本发明也能够在不改变执行结果的前提下执行效率较高的优化改写sql语句,进而提高了服务器运行sql语句的效率。
54.虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。
技术特征:
1.一种sql语句的优化处理方法,其特征在于,包括以下步骤:s100,获取用户输入的sql语句a;s200,对a进行解析,获取a的类型;所述类型包括数据定义类型、数据查询类型、数据操纵类型、事务控制类型或数据控制类型;s300,对a进行优化改写,得到与a对应的优化改写sql语句b={b1,b2,
…
,b
n
},b
n
为与a对应的第n个优化改写sql语句,b
n
与a的执行结果相同,n的取值范围为1到n,n为与a对应的优化改写sql语句的数量;s400,遍历b和d,如果b
n
满足d
h
,则将第一预设值赋予f
n
中的第h个元素;否则,将第二预设值赋予f
n
中的第h个元素,f
n
为b
n
对应的特征向量,f
n
的初始化为维数为h的向量;d
h
为d中第h条预设条件,d为与a的类型对应的预设条件库,d=(d1,d2,
…
,d
h
),h的取值范围为1到h,h为d中预设条件的数量,h与a的类型相关;s500,遍历b,将f
n
在与a的类型对应的预设的sql样本库c中进行匹配,获取与f
n
匹配的样本特征向量的执行效率;c={c1,c2,
…
,c
m
},c
m
为预设的第m个sql执行环境对应的样本库,m的取值范围为1到m,m为预设的sql执行环境的数量,所述sql执行环境包括执行sql时服务器负载的大小;c
m
={c
m,1
,c
m,2
,
…
,c
m,q
},c
m,q
为c
m
中第q个样本特征向量与执行效率的对应关系,q的取值范围为1到q,q为c
m
包括的所述对应关系的数量;c
m,q
=(cf
m,q
,cx
m,q
),cf
m,q
为c
m,q
对应的样本特征向量,cx
m,q
为c
m,q
对应的执行效率;s600,在用户界面上显示执行效率最高的匹配的样本特征向量对应的优化改写sql语句b
max
;s700,如果接收到用户执行b
max
的指令,则执行b
max
。2.根据权利要求1所述的sql语句的优化处理方法,其特征在于,s700还包括:如果接收到用户执行b
max
的指令,还获取b
max
对应的实际执行效率,并根据b
max
对应的实际执行效率对目标sql样本库中目标样本特征向量的执行效率进行更新,所述目标sql样本库为c中与当前的sql执行环境差异最小的执行环境对应的样本库,所述目标样本特征向量为与f
n
相等的样本特征向量。3.根据权利要求2所述的sql语句的优化处理方法,其特征在于,根据b
max
对应的实际执行效率对目标sql样本库中目标样本特征向量的执行效率进行更新,包括:s710,如果目标sql样本库中存在目标样本特征向量,则获取第一执行效率差异值δe,δe=|e
1-e2|,e1为b
max
对应的实际执行效率,e2为目标sql样本库中b
max
对应的样本特征向量的执行效率;s720,获取第二执行效率差异e’,e’=δe/e2;s730,如果e’小于等于预设执行效率阈值,则更新目标sql样本库中目标样本特征向量的执行效率为(k1*e1+k2*e2),k1为第一权重,k2为第二权重,0<k1<k2<1,k1+k2=1。4.根据权利要求3所述的sql语句的优化处理方法,其特征在于,s710还包括:如果目标sql样本库中不存在目标样本特征向量,则将f
n
与e1的对应关系(f
n
,e1)增加至目标sql样本库。5.根据权利要求3所述的sql语句的优化处理方法,其特征在于,s730还包括:如果e’大于预设执行效率阈值,则不更新目标sql样本库。6.根据权利要求1所述的sql语句的优化处理方法,其特征在于,s500中,将f
n
在与a的类
型对应的预设的sql样本库c中进行匹配,获取与f
n
匹配的样本特征向量的执行效率包括:s510,获取当前的sql执行环境;s520,获取c中与当前的sql执行环境差异最小的执行环境对应的样本库;s530,获取所述差异最小的样本库中与f
n
差异最小的样本特征向量;s540,将所述差异最小的样本特征向量对应的执行效率作为与f
n
匹配的样本特征向量的执行效率。7.根据权利要求6所述的sql语句的优化处理方法,其特征在于,s530中,使用余弦相似度方法获取所述差异最小的样本库中与f
n
差异最小的样本特征向量。
技术总结
本申请涉及电数字数据处理技术领域,特别是涉及一种SQL语句的优化处理方法。该方法包括以下步骤:S100,获取用户输入的SQL语句a;S200,对a进行解析,获取a的类型;S300,对a进行优化改写,得到与a对应的优化改写SQL语句B;S400,S400,遍历B和D,如果b
技术研发人员:叶新江 简传挺 袁凯 方毅
受保护的技术使用者:每日互动股份有限公司
技术研发日:2023.05.09
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
