一种单线程sql语句执行方法、设备及存储介质技术

技术编号:23704724 阅读:67 留言:0更新日期:2020-04-08 11:08
本发明专利技术公开了一种单线程sql语句执行方法、设备及存储介质,其中所述执行方法包括步骤S1:创建一个先进先出的队列,将多条sql语句依次写入队列中;步骤S2:创建一个子线程,所述子线程与数据库相连;步骤S3:从所述队列中取出一条所述sql语句;步骤S4:将取出的所述sql语句经所述子线程发送至所述数据库中进行执行,并删除已执行的所述sql语句;步骤S5:循环所述步骤S3至S4,直至所述队列为空。本发明专利技术将多线程下业务产生的多条sql执行语句合并在一条线程下,循环逐条sql执行,可以预防瞬间请求高峰导致系统崩溃的故障,以提高系统稳定性。

【技术实现步骤摘要】
一种单线程sql语句执行方法、设备及存储介质
本专利技术涉及数据库加速
,尤其涉及一种单线程sql语句执行方法、设备及存储介质。
技术介绍
目前,互联网服务端应用通常都要读写关系型的数据库,例如mysql。每次执行业务逻辑,都会将业务所产生的sql语句发送到数据库中执行。如果存在大量用户同时使用这个互联网应用程序,系统则会同时产生大量的sql语句发送到数据库执行。高并发多线程下,对于执行大量sql语句,关系型数据库读写性能会显著降低,甚至会引发响应超时、拒绝访问、死锁等问题,同时会影响系统的业务正常运作。
技术实现思路
为了克服现有技术的不足,本专利技术的目的之一在于提供一种单线程sql语句执行方法,将多线程下业务产生的多条sql执行语句合并在一条线程下,循环逐条sql执行,可以预防瞬间请求高峰导致系统崩溃的故障,以提高系统稳定性。本专利技术的目的之二在于提供一种电子设备。本专利技术的目的之三在于提供一种存储介质。本专利技术的目的之一采用如下技术方案实现:一种单线程sql语句执行方法,包括:步骤S1:创建一个先进先出的队列,将多条sql语句依次写入队列中;步骤S2:创建一个子线程,所述子线程与数据库相连;步骤S3:从所述队列中取出一条所述sql语句;步骤S4:将取出的所述sql语句经所述子线程发送至所述数据库中进行执行,并删除已执行的所述sql语句;步骤S5:循环所述步骤S3至S4,直至所述队列为空。进一步地,所述步骤S3中取出一条所述sql语句后,判断所述队列是否为空,若所述队列为空,则等待设定时间后再执行步骤S3;若否,则执行步骤S4。进一步地,所述设定时间为用户自定义设置或为系统默认生成的固定时间。进一步地,每条所述sql语句均由其对应的业务请求产生。进一步地,所述队列与业务多线程相连,业务多线程将产生的sql语句依次写入所述队列中。进一步地,多条所述sql语句根据其对应的业务请求提出时间确定每条所述sql语句进入所述队列的顺序。进一步地,多条所述sql语句根据其对应的业务请求的优先级别确定每条所述sql语句进入所述队列的顺序。本专利技术的目的之二采用如下技术方案实现:一种电子设备,其包括处理器、存储器及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的单线程sql语句执行方法。本专利技术的目的之三采用如下技术方案实现:一种存储介质,其上存储有计算机程序,所述计算机程序被执行时实现上述的单线程sql语句执行方法。相比现有技术,本专利技术的有益效果在于:在不影响原有系统业务逻辑的前提下,通过将多线程下业务产生的多条sql执行语句合并在一条线程下,循环逐条sql执行,由于是在单线程下执行sql语句,则不会引起拒绝访问和死锁等问题,而且可以预防瞬间请求高峰导致系统崩溃的故障,以提高系统稳定性。附图说明图1为本专利技术的单线程sql语句执行方法的流程示意图。具体实施方式下面,结合附图以及具体实施方式,对本专利技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。现有的系统中,多条业务进程与数据库直接相连,每次执行业务逻辑时,每条业务线程均会根据业务请求生成对应sql语句并将其直接发送至数据库中进行执行,则有可能出现因瞬间请求高峰导致系统出现崩溃等问题。而本实施例中的一种单线程sql语句执行方法,则可解决上述问题,以提高系统的稳定性。如图1所示,所述方法包括如下步骤:步骤S1:创建一个先进先出的队列,将多条sql语句依次写入队列中;先进先出队列是一种基于先进先出策略的集合类型,队列中的元素的处理顺序就是其添加到队列中的顺序;而本实施例中所述队列与多个业务线程相连,每个业务线程根据业务请求对应产生sql语句,将大量sql语句添加到队列中,即可让大量的sql语句可按照顺序排列在所述队列中,避免出现大量sql语句高并发,影响系统的稳定性。当业务请求未结束之前,产生的sql语句将陆陆续续地添加至所述队列中,而sql语句进入所述队列的时间由所述业务请求发起的时间决定;而当业务请求结束时,即无sql语句产生,此时则无新的sql语句添加至所述队列中,此时所述队列即为空。其中,多条所述sql语句可根据其对应的业务请求提出时间确定每条所述sql语句进入所述队列的顺序,即业务请求提出时间相对较早的,对应生成的sql语句可优先写入所述队列;而业务请求提出时间相对较晚的,对应生成的sql语句则排列在优先写入所述队列中的sql语句之后。此外,还可通过根据其对应的业务请求的优先级别确定每条所述sql语句进入所述队列的顺序。用户可预先设置每条业务请求的优先级别,优先级别高的,其生成的sql语句即可优先写入所述队列中,优先级别低的,其生成的sql语句则排列在优先级别高的sql语句之后。步骤S2:创建一个子线程,所述子线程与数据库相连;所述子线程与数据库相连,所述队列中输出的sql语句可依次沿所述子线程传输至数据库中进行执行,由于是在单线程下执行sql语句,则不会引起拒绝访问和死锁等问题,而且可以预防瞬间请求高峰导致系统崩溃的故障。步骤S3:从所述队列中取出一条所述sql语句;按照所述队列的先进先出特性,按照顺序从所述队列中抽取出一条所述sql语句。此外,取出一条所述sql语句后,还需判断当前的所述队列是否为空,若所述队列为空,则等待设定时间后再执行步骤S3,即等待设定时间后再重新从所述队列中抽取出一条所述sql语句,让陆续添加入所述队列中的sql语句仍可被抽取和执行;若否,则代表所述队列中仍有需要执行的sql语句,此时执行步骤S4。其中,所述设定时间为用户自定义设置或为系统默认生成的固定时间,而在本实施例中,所述设定时间为0.5秒,即当前所述队列为空时,等待0.5秒后重新从所述队列中抽取sql语句,若此时所述队列仍未空,则再等待0.5秒之后再重新抽取,直至业务请求结束。步骤S4:将取出的所述sql语句经所述子线程发送至所述数据库中进行执行,所述队列中已经被抽取和执行的sql语句会被删除,使得所述队列中只排列有未执行的sql语句,使得sql执行得到优化。步骤S5:循环所述步骤S3至S4,循环逐条sql语句进行执行,直至业务请求完全结束,并将所述队列中的所有sql语句完全执行完毕为止,才可停止循环。由于是在单线程下执行sql语句,则不会引起拒绝访问和死锁等问题,而且可以预防瞬间请求高峰导致系统崩溃的故障。实施例二一种电子设备,包括存储器、处理器以及存储在存储器中的程序,所述程序被配置成由处理器执行,处理器执行所述程序时实现实施例一中单线程sql语句执行方法的步骤。另外,本专利技术还提供一种存储介质,所述存储介质存储有计算机程序,所本文档来自技高网...

【技术保护点】
1.一种单线程sql语句执行方法,其特征在于,包括:/n步骤S1:创建一个先进先出的队列,将多条sql语句依次写入队列中;/n步骤S2:创建一个子线程,所述子线程与数据库相连;/n步骤S3:从所述队列中取出一条所述sql语句;/n步骤S4:将取出的所述sql语句经所述子线程发送至所述数据库中进行执行,并删除已执行的所述sql语句;/n步骤S5:循环所述步骤S3至S4,直至所述队列为空。/n

【技术特征摘要】
1.一种单线程sql语句执行方法,其特征在于,包括:
步骤S1:创建一个先进先出的队列,将多条sql语句依次写入队列中;
步骤S2:创建一个子线程,所述子线程与数据库相连;
步骤S3:从所述队列中取出一条所述sql语句;
步骤S4:将取出的所述sql语句经所述子线程发送至所述数据库中进行执行,并删除已执行的所述sql语句;
步骤S5:循环所述步骤S3至S4,直至所述队列为空。


2.根据权利要求1所述的单线程sql语句执行方法,其特征在于,所述步骤S3中取出一条所述sql语句后,判断所述队列是否为空,若所述队列为空,则等待设定时间后再执行步骤S3;若否,则执行步骤S4。


3.根据权利要求2所述的单线程sql语句执行方法,其特征在于,所述设定时间为用户自定义设置或为系统默认生成的固定时间。


4.根据权利要求1所述的单线程sql语句执行方法,其特征在于,每条所述sql语句均由其对应的业务请...

【专利技术属性】
技术研发人员:沈汉标王妙玉童威云吴宁泉李思龙
申请(专利权)人:广东科徕尼智能科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1