当前位置: 首页>前端>正文

mysql 是怎么掉电恢复的 mysql 耗时

背景技术:

有很多关系型数据库查询业务非常耗时,比如查询企业实时报表之类的,一次查询可能需要几分钟甚至更长。在很多时候,前端业务员因为网络原因或者耐心不足,未等到查询结果返回就刷新页面重复查询,或者直接关闭页面不查询。这个时候,刷新或者关闭页面时,之前的查询在数据库中仍然在继续执行,并未被中断。如果用户多次刷新页面,后端数据库就会重复执行多个任务,显然这些情况都会极大的增加数据库的负担。

技术实现要素:

本发明要解决的技术问题,在于提供一种数据库高耗时查询的自动取消方法,实现在前端关闭或者刷新的情况下,系统自动取消对应的数据库查询作业。

本发明是这样实现的:一种数据库高耗时查询的自动取消方法,包括:

步骤S1、前端提交查询数据请求到服务器,请求的信息包括请求的信息以及全新且唯一的请求ID,同时前端使用这个请求ID定时发起请求跟服务器保持通讯;

步骤S2、服务器接收到查询数据请求并去执行数据库查询的时候,将请求ID以及数据库连接对象的相关信息保存到本地缓存中;

步骤S3、前端在等待数据库返回结果的时候,定时使用请求ID跟服务器保持通讯,服务器每接收到前端的请求ID,刷新缓存中跟此请求ID关联的数据库连接对象的相关信息的时间;

步骤S4、在服务器刷新缓存的数据的期间,如果前端页面被关闭或者被刷新时,则之前的那个请求ID不会再跟服务器保持通讯,那么缓存中的数据则会过期,服务器发现过期的连接信息,则会取出数据库连接对象的相关信息,并发起停止数据库查询的命令,取消数据库执行的任务;如果前端页面一直无异常状况发生,则服务器查询结束后,将数据库连接对象的相关信息从缓存中移除。

进一步的,所述步骤S2中,如果服务器是分布式的,则对请求ID进行哈希取模,以保证同一个请求ID的请求都分发到同一台服务器上。

进一步的,所述步骤S2中,服务器将请求ID以及数据库连接对象的相关信息是以Key-Value的形式保存到本地缓存中。

进一步的,所述步骤S4中,服务器发起停止数据库查询的命令是通过启动一个新线程来实现。

本发明具有如下优点:本发明前端每次查询都携带有一个全新的唯一的请求ID,服务器接收到查询请求后将请求ID以及相关信息以Key-Value的形势存入缓存,同时前端使用该请求ID定时发起请求保持跟服务器的连接,后端服务器接收到请求会持续刷新缓存时间,用户关闭页面或者刷新页面的时候,当前的查询请求已经失效,后端服务器查询结果已经无法返回给前端了,对于耗时的数据库操作,采用此种自动取消的方法,可以极大地减少数据库压力。

具体实施方式

本发明的数据库高耗时查询的自动取消方法,包括:

步骤S1、前端提交查询数据请求到服务器,请求的信息包括请求的信息以及全新且唯一的请求ID,一般使用UUID,同时前端使用这个请求ID定时发起请求跟服务器保持通讯,定时发起请求的频率可以根据实际情况配置,比如每隔1秒发起一次;

步骤S2、服务器接收到查询数据请求并去执行数据库查询的时候,将请求ID以及数据库连接对象的相关信息以Key-Value的形式保存到本地缓存中;如果服务器是分布式的,则对请求ID进行哈希取模,以保证同一个请求ID的请求都分发到同一台服务器上;

步骤S3、前端在等待数据库返回结果的时候,定时使用请求ID跟服务器保持通讯,服务器每接收到前端的请求ID,刷新缓存中跟此请求ID关联的数据库连接对象的相关信息的时间;

步骤S4、在服务器刷新缓存的数据的期间,如果前端页面被关闭或者被刷新时,则之前的那个请求ID不会再跟服务器保持通讯,那么缓存中的数据则会过期,服务器发现过期的连接信息,则会取出数据库连接对象的相关信息,并启动一个新线程发起停止数据库查询的命令,取消数据库执行的任务;如果前端页面一直无异常状况发生,则服务器查询结束后,将数据库连接对象的相关信息从缓存中移除。

本发明具有如下优点:本发明前端每次查询都携带有一个全新的唯一的请求ID,服务器接收到查询请求后将请求ID以及相关信息以Key-Value的形势存入缓存,同时前端使用该请求ID定时发起请求保持跟服务器的连接,后端服务器接收到请求会持续刷新缓存时间,用户关闭页面或者刷新页面的时候,当前的查询请求已经失效,后端服务器查询结果已经无法返回给前端了,对于耗时的数据库操作,采用此种自动取消的方法,可以极大地减少数据库压力。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。


https://www.xamrdz.com/web/2ag1960191.html

相关文章: