一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库访问方法及装置与流程

2022-02-25 23:20:30 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种数据库访问方法。本技术同时涉及一种数据库访问装置,一种计算设备,以及一种计算机可读存储介质。


背景技术:

2.在数据处理中,各个系统经常要向数据库服务器发送数据查询请求,以获取数据库中存储的数据,在查询过程中可能会出现执行效率低且长时间占用系统资源的查询语句,即慢查询语句(慢sql),这些查询语句的出现往往会对服务器造成负面影响,导致服务器处理速度变慢、正常查询语句无法执行,拖慢业务的处理效率,除此之外,慢sql没有相应的执行链路监控,出现慢sql后,很难定位慢sql对应的业务场景,不利于技术人员快速定位解决慢sql带来的影响。


技术实现要素:

3.有鉴于此,本技术实施例提供了一种数据库访问方法。本技术同时涉及一种数据库访问装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的慢查询语句定位困难、恢复慢,业务场景定位困难的问题。
4.根据本技术实施例的第一方面,提供了一种数据库访问方法,包括:
5.接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;
6.根据所述访问结果设置所述待处理查询任务对应的熔断器状态;
7.在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;
8.在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库;
9.获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。
10.根据本技术实施例的第二方面,提供了一种数据库访问装置,包括:
11.接收模块,被配置为接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;
12.设置模块,被配置为根据所述访问结果设置所述待处理查询任务对应的熔断器状态;
13.统计模块,被配置为在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;
14.第一调整模块,被配置为在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状
态时通过预设数量的访问请求访问所述业务数据库;
15.第二调整模块,被配置为获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。
16.根据本技术实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述数据库访问方法的步骤。
17.根据本技术实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述数据库访问方法的步骤。
18.本技术提供的数据库访问方法,接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;根据所述访问结果设置所述待处理查询任务对应的熔断器状态;在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库;获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。本技术一实施例实现了通过待处理查询任务的访问结果确定待处理查询任务的语句属性信息,并根据语句属性信息确定处理策略,再根据处理策略处理待处理查询任务,可以实时监控每个待处理查询任务的状态,进而使用不同的处理策略分别处理每个待处理查询任务。
附图说明
19.图1是本技术一实施例提供的一种数据库访问方法的流程图;
20.图2是本技术一实施例提供的确定查询语句是否满足检测条件的示意图;
21.图3是本技术一实施例提供的待处理查询任务的处理策略示意图;
22.图4是本技术一实施例提供的一种应用于访问数据库的数据库访问方法的处理流程图;
23.图5是本技术一实施例提供的一种数据库访问装置的结构示意图;
24.图6是本技术一实施例提供的一种计算设备的结构框图。
具体实施方式
25.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。
26.在本技术一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术一个或多个实施例。在本技术一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本技术一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
27.应当理解,尽管在本技术一个或多个实施例中可能采用术语第一、第二等来描述
各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
28.首先,对本技术一个或多个实施例涉及的名词术语进行解释。
29.慢sql:慢查询语句,异常sql,通常是由于查询结果集数据量大或者没有设置合理的索引,导致sql执行慢,慢sql会导致sql服务端执行线程阻塞、cpu打满,其他正常的sql也会无法执行,最终依赖该sql服务的业务服务不可用。
30.在实际应用中,慢sql通常会导致服务端线程阻塞、cpu打满,进而导致其他正常的sql也无法执行,出现慢sql拖垮业务的情况。通常情况下,技术人依赖dba查看db日志进行排查,这样处理会导致正常sql也会报慢查询的异常,干扰排查,而且,即便是确定了慢sql,也无法快速准确地该sql是由哪个业务场景导致的。业内通常会在代理层做db执行监控,出现慢sql时,通过黑名单进行拦截,但是该方法不支持自动添加黑名单,出现问题时不能快速止损,而且无法对sql进行执行链路监控,出现慢sql时,很难定位是什么场景导致的。
31.基于此,在本技术中,提供了一种数据库访问方法,本技术同时涉及一种数据库访问装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
32.图1示出了根据本技术一实施例提供的一种数据库访问方法的流程图,具体包括以下步骤:
33.步骤102:接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果。
34.待处理查询任务即待执行的sql语句,待处理查询任务是用于从业务数据库中查询相应业务数据的查询语句,当有数据读取请求时,通过相应的查询语句,可以从业务数据库中读取到相应的业务数据。
35.本技术提供的数据库访问方法,需要判断出待处理查询任务的任务属性信息,判断待处理查询任务是否为慢sql,如果待处理查询任务不是慢sql的情况下,则正常处理;如果待处理查询任务是慢sql的情况下,则通过相应的处理策略处理该待处理查询任务。
36.在实际应用中,有一些查询语句因为客观原因,本身查询速度就是比较慢的,无需进行慢sql判断,例如,用户在a地进行数据导出服务,而数据库在b地,a地与b地之间因为网络连接的原因,访问速度较慢,相应的sql执行慢,符合预期,因此对于该类查询语句无需判断是否属于慢sql。对于一些已经明确为慢sql的查询语句,也无需再次进行判断,可以直接进行相应的处理,
37.基于此,所述方法还包括:
38.判断所述待处理查询任务是否保存在预设白名单中;
39.若是,不设置所述待处理查询任务对应的熔断器状态;
40.若否,则判断所述待处理查询任务是否保存在预设黑名单中;
41.若是,则降级所述待处理查询任务对应的访问请求,并发送异常通知;
42.若否,则执行根据访问结果设置所述待处理查询任务对应的熔断器状态的操作。
43.其中,预设白名单为预先配置的查询语句白名单,即在预设白名单中的查询语句,
无需进行慢sql校验,可以直接访问业务数据库。预设黑名单中保存的查询语句为已知的慢sql,对于已经确定为慢sql的查询语句,则降级该待处理查询任务中的访问请求,并发出异常通知,告知业务使用方,该查询语句为慢sql。
44.参见图2,图2示出了本技术一实施例提供的确定查询语句是否满足检测条件的示意图,如图2所示,在接收到待处理查询任务后,先判断该待处理查询任务是否在预设白名单中,若该待处理查询任务在预设白名单中,则可以直接执行该待处理查询任务对应的访问请求,访问业务数据库并返回访问结果;若该待处理查询任务未在预设白名单中,则判断该待处理查询任务是否在预设黑名单中,若该待处理查询任务在预设黑名单中,则对该待处理查询任务做降级处理,即减少该待处理查询任务对应的访问请求,同时抛出异常;若该待处理查询任务也未在预设黑名单中,则确定该待处理查询任务满足检测条件,可以进行后续的慢sql熔断检测。
45.在本技术提供的一具体实施方式中,获得待处理查询任务sql1,若在预设白名单中包括sql1,则接收通过sql1的访问请求,访问业务数据库;若在预设白名单中不包括sql1,则判断是否在预设黑名单中是否包括sql1,若包括则对sql1中的访问请求做降级处理,减少对应的访问请求;若不包括则确定sql1满足检测条件,可以进行后续的慢sql熔断检测。
46.在确定待处理查询任务满足检测条件的情况下,即说明待处理查询任务即不属于预设白名单,也不属于预设黑名单,需要对待处理查询任务进行熔断检测,具体的,接收针对所述待处理查询任务的至少一个访问请求,并根据访问请求访问业务数据库,获得每个访问请求对应的访问结果。
47.具体的,一个待处理查询任务会对应一个、两个或多个访问请求,在对待处理查询任务进行熔断检测的过程中,接收待处理查询任务对应的访问请求,并访问相应的业务数据库,获得相应的访问结果。
48.在本技术提供的一具体实施方式中,沿用上例,待处理查询任务为sql1,接收sql1对应的访问请求q1,根据sql1访问业务数据库,获得访问请求q1对应的访问结果r1;接收sql1对应的访问请求q2,根据sql1访问业务数据库,获得访问请求q2对应的访问结果r2
……
依次类推。
49.步骤104:根据所述访问结果设置所述待处理查询任务对应的熔断器状态。
50.在实际应用中,会为每个待处理查询任务即sql语句设置一个熔断器,熔断器用于对待处理查询任务进行熔断判断。
51.每个待处理查询任务对应的熔断器的熔断器状态在初始时刻均设置为关闭状态,会根据访问结果来对熔断器的熔断状态进行变更。具体地,熔断器状态包括有开启状态、关闭状态和限流状态,其中,开启状态表示对该待处理查询任务开启熔断,即无法通过该待处理查询任务访问业务数据库;关闭状态表示对该待处理查询任务终止熔断,即可以通过该待处理查询任务访问业务数据库;限流状态表示对待处理查询任务的访问请求限流,即待处理查询任务中的部分访问请求被允许访问业务数据库。
52.具体的,需要根据访问结果对待处理查询任务的熔断器状态进行设置。访问结果中包括访问时间,访问时间即一次访问请求访问业务数据库的响应时间。相应的,根据所述访问结果设置所述待处理查询任务对应的熔断器状态,包括s1042-s1048:
53.s1042、统计预设时间区间内访问请求的请求总次数。
54.预设时间区间即为检测待处理查询任务的时间区间,请求总次数具体是指在该预设时间区间内接收到该待处理查询任务对应的访问请求的总次数,例如在过去的5分钟内,通过某个sql语句接收到对应的访问请求总共有50次。
55.s1044、根据访问时间统计所述预设时间区间内的请求超时次数。
56.访问结果中包括有访问时间,访问时间具体是指对应的访问请求访问业务数据库的时间,请求超时次数具体是指在预设时间区间内,访问时间超时的访问请求的次数,具体的,根据访问时间统计所述预设时间区间内的请求超时次数,包括:
57.统计所述预设时间区间内访问时间超过第一预设阈值的访问请求的次数,获得请求超时次数。
58.每个访问请求在访问业务数据库后都会返回响应的访问结果,在访问结果中会包含有该访问请求的访问时间,如果该访问时间超过第一预设阈值,则说明该访问请求访问超时,记录一次请求超时次数,例如,第一预设阈值为4ms(毫秒),如果访问请求q1的对应访问结果中的访问时间为5ms,则访问请求q1就是超时访问请求,记录一次请求超时次数,统计预设时间周期内访问时间超过第一预设阈值的访问请求的次数,获得请求超时次数。例如,在过去的5分钟内,访问时间超过第一预设阈值(4ms)的访问请求数量共有10次,则请求超时总次数为10次。
59.s1046、根据所述请求超时次数和所述请求总次数确定所述待处理查询任务的任务属性信息。
60.在获得预设时间区间内请求超时次数和请求总次数之后,即可根据请求超时次数和请求总次数来确定待处理查询任务具体是慢sql还是正常sql。具体的,根据所述请求超时次数和所述请求总次数确定所述待处理查询任务的任务属性信息,包括:
61.根据所述请求超时次数和所述请求总次数计算请求超时率;
62.在所述请求超时率大于第二预设阈值的情况下,确定所述待处理查询任务的任务属性信息为慢查询语句;
63.在所述请求超时率小于等于第二预设阈值的情况下,确定所述待处理查询任务的任务属性信息为正常查询语句。
64.在实际应用中,根据请求超时次数和请求总次数既可以计算在该预设时间区间内的请求超时率,第二预设阈值即为请求超时率对应的阈值,即若请求超时率大于该第二预设阈值的情况下,说明通过待处理查询任务进行的访问请求都很慢,则该待处理查询任务为慢查询语句,即慢sql;若请求超时率小于或等于第二预设阈值的情况下,说明通过待处理查询任务进行的访问请求正常,该待处理查询任务为正常查询语句。
65.s1048、根据所述任务属性信息设置所述待处理查询任务对应的熔断器状态。
66.在确定待处理查询任务的任务属性信息之后即可根据该任务属性信息来设置待处理查询任务对应的熔断器状态,具体的:
67.在所述任务属性信息为慢查询语句的情况下,设置所述待处理查询任务对应的熔断器状态为开启状态;
68.在所述任务属性信息为正常查询语句的情况下,设置所述待处理查询任务对应的熔断器状态为关闭状态。
69.当确定待处理查询任务为慢查询语句的情况下,将待处理查询任务的熔断器状态设置为开启状态,即在此状态下无法通过待处理查询任务访问业务数据库。
70.步骤106:在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库。
71.当熔断器状态为关闭状态时,正常通过待处理查询任务访问业务数据库即可,在本技术提供的实施例中,重点以慢查询语句进行处理,即待处理查询任务为慢查询语句,待处理查询任务的熔断器状态为开启状态。
72.在熔断器状态为开启状态时,对待处理查询任务进行熔断处理,即暂停接收待处理查询任务对应的访问请求,无法再通过该待处理查询任务访问业务数据库,避免因慢查询语句访问业务数据库慢出现拖垮业务的情况下,提高了业务处理效率。
73.在实际应用中,为了避免出现误判慢sql的情况,例如恰好在预设时间区间内出现网络波动,导致该待处理查询任务变为慢sql,对待处理查询任务带来不利的影响,在熔断器状态为开启状态之后,统计熔断器开启时长,即统计暂停接收待处理查询任务对应的访问请求的时长。当熔断器开启时长超过预设时间阈值的情况下,可以再次对待处理查询任务做熔断检测。
74.步骤108:在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库。
75.当熔断器开启时长超过预设时间阈值的情况下,可以尝试再次对待处理查询任务进行熔断检测,为了避免待处理查询任务的请求数量过多,引起慢sql出现的情况,可以将待处理查询任务的熔断器状态调整为限流状态,限流状态具体是指半开放的接收待处理查询任务对应的访问请求,即接收一定数量的限流访问请求,例如只接收20个访问请求或只接收50个访问请求。
76.步骤110:获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。
77.通过限流访问请求访问业务数据库,获得熔断器状态在限流状态下的限流访问结果,再根据限流访问结果确定该待处理查询任务的限流语句属性信息是慢查询语句还是正常查询语句。具体的判断待处理查询任务的限流语句属性信息的方法与上述判断待处理查询任务的语句属性信息的方法相同,相关内容详见上述关于语句属性信息的描述,在此就不再赘述。
78.具体的,基于所述限流访问结果调整所述熔断器状态,包括:
79.基于所述限流访问结果确定所述待处理查询任务的限流任务属性信息;
80.根据所述限流任务属性信息调整所述熔断器状态。
81.在获取所述限流访问结果后,即可根据限流访问结果即可确定待处理查询任务的限流任务属性信息,限流任务属性信息为慢sql或正常sql。
82.具体的,根据所述限流任务属性信息调整所述熔断器状态,包括:
83.在所述限流任务属性信息为慢查询语句的情况下,设置所述熔断器状态为开启状态;
84.在所述限流任务属性信息为正常查询语句的情况下,设置所述熔断器状态为关闭
状态。
85.若限流任务属性信息判断为慢查询语句的情况下,则再次将待处理查询任务对应的熔断器状态设置为开启状态,暂停接收待处理查询任务对应的访问请求;若限流语句属性信息判断为正常查询语句的情况下,则说明之前的判断出现了误判,将待处理查询任务对应的熔断器状态设置为开启状态,同时接收待处理查询任务对应的访问请求,并访问业务数据库返回访问结果。
86.参见图3,图3示出了本技术一实施例提供的待处理查询任务的处理策略示意图,如图3中a所示,待处理查询任务的熔断器状态在初始状态下为关闭状态,通过该待处理查询任务接收访问请求访问业务数据库,并根据访问结果进行校验,以第二预设阈值为50%为例,当请求超时率超过50%的情况下,将熔断器状态设置为开启状态。如图3中b所示,在将熔断器状态设置为开启状态后,统计熔断器开启时长,在熔断器开启时长超过预设时间阈值的情况下,将熔断器状态设置为限流状态,此时,接收预设数量的限流访问请求访问业务数据库,并根据访问结果进行校验,当限流访问请求的超时率超过50%的情况下,将熔断器状态设置为开启状态;当限流访问请求的超时率小于或等于50%的情况下,将熔断器状态设置为关闭状态。如图3中c所示,熔断器状态设置为开启状态的情况下,所有通过该待处理业务请求的访问请求均拒绝,无法访问业务数据库。
87.在实际应用中,即便找出了慢sql,也无法准确定位慢sql的业务场景,不利于技术人员解决相应的慢sql的问题,基于此,所述方法还包括:
88.记录所述待处理查询任务对应的访问请求的访问请求属性信息;
89.根据所述访问请求属性信息生成所述待处理查询任务的可视化信息,并展示所述可视化信息。
90.访问请求属性信息包括访问请求次数、对应的业务接口、访问耗时等等属性信息,并将上述访问请求属性信息进行统计,根据每个属性信息的类型生成待处理查询任务对应的可视化信息,通过可视化的形式将访问请求属性信息进行展示。具体的,可以基于java agent,记录每条查询语句的执行时间和接口信息,上报至skywalking服务中进行解析并存储,便于技术人员在确定慢sql后,可以根据可视化信息快速准确的定位慢sql对应的业务场景,进而进行有针对性的处理,提高了处理效率。
91.本技术提供的数据库访问方法,接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;根据所述访问结果设置所述待处理查询任务对应的熔断器状态;在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库;获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。本技术一实施例实现了通过待处理查询任务的访问结果确定待处理查询任务的语句属性信息,并根据语句属性信息确定处理策略,再根据处理策略处理待处理查询任务,可以实时监控每个待处理查询任务的状态,进而使用不同的处理策略分别处理每个待处理查询任务。
92.其次,通过预设白名单和预设黑名单的形式,过滤一些已知状态的查询语句,减轻
了服务器的处理压力,提高了待处理查询任务的处理效率。
93.再次,对于判定为慢sql的待处理查询任务,通过限流的方式,对待处理查询任务进行再次判定,避免了因特殊原因导致的偶然对待处理查询任务发生误判的情况,提高了判断慢sql的准确率。
94.最后,通过可视化的形式展示待处理查询数据的属性信息,如执行频次、耗时、接口分布等等,便于技术人员可以快速准确的了解慢sql的相关属性信息,并有针对性的进行调整。
95.下述结合附图4,以本技术提供的数据库访问方法在访问数据库的应用为例,对所述数据库访问方法进行进一步说明。其中,图4示出了本技术一实施例提供的一种应用于访问数据库的数据库访问方法的处理流程图,具体包括以下步骤:
96.步骤402:接收待处理查询任务sql-a。
97.在本技术提供的一具体实施例中,接收针对业务数据库的查询语句sql-a。接收待处理查询任务sql-a
98.步骤404:判断sql-a是否保存在预设白名单,若是,则执行步骤406,若否,则执行步骤408。
99.在本技术提供的一具体实施例中,沿用上例,判断预设白名单中是否有sql-a,若存在,则执行步骤406,若不存在,则执行步骤408。
100.步骤406:执行sql-a对应的访问请求。
101.在本技术提供的一具体实施例中,沿用上例,通过sql-a接收对应的访问请求,并访问业务数据库。
102.步骤408:判断sql-a是否保存在预设黑名单,若是,则执行步骤410,若否,则执行步骤412。
103.在本技术提供的一具体实施例中,沿用上例,判断预设黑名单中是否有sql-a,若存在,则执行步骤410,若不存在,则执行步骤412。
104.步骤410:降级sql-a对应的访问请求,并发送异常通知。
105.在本技术提供的一具体实施例中,沿用上例,减少sql-a中的访问请求,并发送sql-a为慢sql的异常通知。
106.步骤412:基于sql-a对应的访问请求访问业务数据库并获得访问结果。
107.在本技术提供的一具体实施例中,沿用上例,接收sql-a的访问请求,并访问业务数据库,获得每个访问请求的访问结果。
108.步骤414:统计预设时间区间内访问请求的请求总次数。
109.在本技术提供的一具体实施例中,沿用上例,统计一段时间区间内通过sql-a的访问请求的请求总次数为100次。
110.步骤416:根据访问结果中的访问时间统计所述预设时间区间内的请求超时次数。
111.在本技术提供的一具体实施例中,沿用上例,根据每个访问结果中的访问时间确定超时请求,并统计在预设时间区间内的请求超时次数为60次。
112.步骤418:根据所述请求超时次数和所述请求总次数计算请求超时率。
113.在本技术提供的一具体实施例中,沿用上例,根据请求总次数和请求超时次数计算请求超时率为60%。
114.步骤420:在所述请求超时率大于第二预设阈值的情况下,确定sql-a为慢查询语句。
115.在本技术提供的一具体实施例中,沿用上例,第二预设阈值为50%,请求超时率为60%大于第二预设阈值,则确定sql-a为慢查询语句。
116.步骤422:暂停接收sql-a对应的访问请求,并将sql-a对应的熔断器设置为开启状态。
117.在本技术提供的一具体实施例中,沿用上例,sql-a的熔断器默认设置为关闭状态,当确定sql-a为慢查询语句后,将sql-a的熔断器设置为开启状态,并暂停接收sql-a对应的访问请求。
118.步骤424:统计暂停时间。
119.在本技术提供的一具体实施例中,沿用上例,统计暂停接收访问请求的时间。
120.步骤426:在所述暂停时间超过预设时间阈值的情况下,将sql-a对应的熔断器设置为限流状态,接收预设数量的限流访问请求。
121.在本技术提供的一具体实施例中,沿用上例,在暂停时间超过时间阈值的情况下,将sql-a对应的熔断器设置为限流状态,即接收预设数量的sql-a对应的限流访问请求,如10个或者20个限流访问请求。
122.步骤428:基于所述限流访问请求访问所述业务数据库并获得限流访问结果,根据所述限流访问结果确定sql-a的限流语句属性信息。
123.在本技术提供的一具体实施例中,沿用上例,根据限流访问请求访问业务数据库并获得限流访问结果,进而确定sql-a的限流语句属性信息。
124.步骤430:在所述限流语句属性信息为慢查询语句的情况下,将sql-a对应的熔断器设置为开启状态。
125.在本技术提供的一具体实施例中,沿用上例,若sql-a的限流语句属性信息为慢查询语句的情况下,将sql-a对应的熔断器设置为开启状态。
126.步骤432:在所述限流语句属性信息为正常查询语句的情况下,将sql-a对应的熔断器设置为关闭状态。
127.在本技术提供的一具体实施例中,沿用上例,若sql-a的限流语句属性信息为正常查询语句的情况下,将sql-a对应的熔断器设置为关闭状态。
128.本技术提供的数据库访问方法,实现了根据通过待处理查询任务的访问结果确定待处理查询任务的语句属性信息,并根据语句属性信息确定处理策略,再根据处理策略处理待处理查询任务,可以实时监控每个待处理查询任务的状态,进而使用不同的处理策略分别处理每个待处理查询任务。
129.其次,通过预设白名单和预设黑名单的形式,过滤一些已知状态的查询语句,减轻了服务器的处理压力,提高了待处理查询任务的处理效率。
130.最后,对于判定为慢sql的待处理查询任务,通过限流的方式,对待处理查询任务进行再次判定,避免了因特殊原因导致的偶然对待处理查询任务发生误判的情况,提高了判断慢sql的准确率。
131.与上述数据库访问方法实施例相对应,本技术还提供了数据库访问装置实施例,图5示出了本技术一实施例提供的一种数据库访问装置的结构示意图。
132.如图5所示,该装置包括:
133.接收模块502,被配置为接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;
134.设置模块504,被配置为根据所述访问结果设置所述待处理查询任务对应的熔断器状态;
135.统计模块506,被配置为在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;
136.第一调整模块508,被配置为在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库;
137.第二调整模块510,被配置为获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。
138.可选的,所述访问结果包括访问时间;
139.所述设置模块504,进一步被配置为:
140.统计预设时间区间内访问请求的请求总次数;
141.根据访问时间统计所述预设时间区间内的请求超时次数;
142.根据所述请求超时次数和所述请求总次数确定所述待处理查询任务的任务属性信息;
143.根据所述任务属性信息设置所述待处理查询任务对应的熔断器状态。
144.可选的,所述设置模块504,进一步被配置为:
145.统计所述预设时间区间内访问时间超过第一预设阈值的访问请求的次数,获得请求超时次数。
146.可选的,所述设置模块504,进一步被配置为:
147.根据所述请求超时次数和所述请求总次数计算请求超时率;
148.在所述请求超时率大于第二预设阈值的情况下,确定所述待处理查询任务的任务属性信息为慢查询语句;
149.在所述请求超时率小于等于第二预设阈值的情况下,确定所述待处理查询任务的任务属性信息为正常查询语句。
150.可选的,所述设置模块504,进一步被配置为:
151.在所述任务属性信息为慢查询语句的情况下,设置所述待处理查询任务对应的熔断器状态为开启状态;
152.在所述任务属性信息为正常查询语句的情况下,设置所述待处理查询任务对应的熔断器状态为关闭状态。
153.可选的,所述第二调整模块510,进一步被配置为:
154.基于所述限流访问结果确定所述待处理查询任务的限流任务属性信息;
155.根据所述限流任务属性信息调整所述熔断器状态。
156.可选的,所述第二调整模块510,进一步被配置为:
157.根据所述限流任务属性信息调整所述熔断器状态,包括:
158.在所述限流任务属性信息为慢查询语句的情况下,设置所述熔断器状态为开启状态;
159.在所述限流任务属性信息为正常查询语句的情况下,设置所述熔断器状态为关闭状态。
160.可选的,所述装置还包括判断模块,被配置为:
161.判断所述待处理查询任务是否保存在预设白名单中;
162.若是,不设置所述待处理查询任务对应的熔断器状态;
163.若否,则判断所述待处理查询任务是否保存在预设黑名单中;
164.若是,则降级所述待处理查询任务对应的访问请求,并发送异常通知;
165.若否,则执行根据访问结果设置所述待处理查询任务对应的熔断器状态的操作。
166.可选的,所述装置还包括可视化模块,被配置为:
167.记录所述待处理查询任务对应的访问请求的访问请求属性信息;
168.根据所述访问请求属性信息生成所述待处理查询任务的可视化信息,并展示所述可视化信息。
169.本技术提供的数据库访问装置,接收待处理查询任务,基于所述待处理查询任务访问业务数据库并获得访问结果;根据所述访问结果设置所述待处理查询任务对应的熔断器状态;在所述熔断器状态为开启状态的情况下,统计熔断器开启时长,其中,所述待处理查询任务在所述熔断器状态为开启状态时无法访问所述业务数据库;在所述熔断器开启时长超过预设时间阈值的情况下,将所述熔断器状态调整为限流状态,其中,所述待处理查询任务在所述熔断器状态为限流状态时通过预设数量的访问请求访问所述业务数据库;获取所述熔断器状态在限流状态下的限流访问结果,基于所述限流访问结果调整所述熔断器状态。本技术一实施例实现了通过待处理查询任务的访问结果确定待处理查询任务的语句属性信息,并根据语句属性信息确定处理策略,再根据处理策略处理待处理查询任务,可以实时监控每个待处理查询任务的状态,进而使用不同的处理策略分别处理每个待处理查询任务。
170.其次,通过预设白名单和预设黑名单的形式,过滤一些已知状态的查询任务,减轻了服务器的处理压力,提高了待处理查询任务的处理效率。
171.再次,对于判定为慢sql的待处理查询任务,通过限流的方式,对待处理查询任务进行再次判定,避免了因特殊原因导致的偶然对待处理查询任务发生误判的情况,提高了判断慢sql的准确率。
172.最后,通过可视化的形式展示待处理查询任务的属性信息,如执行频次、耗时、接口分布等等,便于技术人员可以快速准确的了解慢sql的相关属性信息,并有针对性的进行调整。
173.上述为本实施例的一种数据库访问装置的示意性方案。需要说明的是,该数据库访问装置的技术方案与上述的数据库访问方法的技术方案属于同一构思,数据库访问装置的技术方案未详细描述的细节内容,均可以参见上述数据库访问方法的技术方案的描述。
174.图6示出了根据本技术一实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
175.计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
176.在本技术的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本技术范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
177.计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
178.其中,处理器620执行所述计算机指令时实现所述的数据库访问方法的步骤。
179.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据库访问方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据库访问方法的技术方案的描述。
180.本技术一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述数据库访问方法的步骤。
181.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据库访问方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据库访问方法的技术方案的描述。
182.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
183.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
184.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
185.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
186.以上公开的本技术优选实施例只是用于帮助阐述本技术。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本技术的内容,可作很多的修改和变化。本技术选取并具体描述这些实施例,是为了更好地解释本技术的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本技术。本技术仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献