CN116701441A - 数据库慢查询检测方法、装置、计算机设备和存储介质 - Google Patents
数据库慢查询检测方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116701441A CN116701441A CN202310937832.5A CN202310937832A CN116701441A CN 116701441 A CN116701441 A CN 116701441A CN 202310937832 A CN202310937832 A CN 202310937832A CN 116701441 A CN116701441 A CN 116701441A
- Authority
- CN
- China
- Prior art keywords
- database
- query
- processing
- fingerprint
- request
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 134
- 238000003860 storage Methods 0.000 title claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 355
- 238000000034 method Methods 0.000 claims abstract description 105
- 238000004458 analytical method Methods 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims abstract description 50
- 238000004590 computer program Methods 0.000 claims abstract description 15
- 238000000605 extraction Methods 0.000 claims description 28
- 238000004422 calculation algorithm Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 10
- 238000012502 risk assessment Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 3
- 238000013500 data storage Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000012795 verification Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000013499 data model Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000149 penetrating effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据库慢查询检测方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术和数据库技术的发展,出现了数据库慢查询的问题,数据慢查询指的是数据库查询处理语句的实际查询时间超过了设定的查询时间。在开发过程中,数据库慢查询可能会导致性能下降,影响用户体验,甚至导致应用程序崩溃。慢查询可能是因为数据库表设计不佳、数据查询量过大、数据库服务器性能不佳等原因导致。目前,对于数据库慢查询,一般可以通过慢查询分析工具来对数据库日志进行分析,聚合其中的慢查询信息后进行处理。
然而,目前的慢查询分析方法只能通过聚合数据库日志来进行分析,需要全量地抓取请求进行分析,消耗的运算资源量较大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低运算资源消耗的数据库慢查询检测方法、装置、计算机设备和计算机可读存储介质。
第一方面,本申请提供了一种数据库慢查询检测方法。所述方法包括:
获取数据库处理请求;
确定所述数据库处理请求中所包含的查询请求;
提取所述查询请求的数据库指纹;
基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果。
第二方面,本申请还提供了一种数据库慢查询检测装置。所述装置包括:
请求获取模块,用于获取数据库处理请求;
查询请求识别模块,用于确定所述数据库处理请求中所包含的查询请求;
指纹提取模块,用于提取所述查询请求的数据库指纹;
风险检测模块,用于基于所述数据库指纹对所述数据库处理请求进行分析,得到所述数据库处理请求的慢查询检测结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取数据库处理请求;
确定所述数据库处理请求中所包含的查询请求;
提取所述查询请求的数据库指纹;
基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取数据库处理请求;
确定所述数据库处理请求中所包含的查询请求;
提取所述查询请求的数据库指纹;
基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果。
上述数据库慢查询检测方法、装置、计算机设备和存储介质,通过在获取数据库处理请求后;确定数据库处理请求中所包含的查询请求,并提取查询请求的数据库指纹。从而在处理数据库请求的过程中,提取查询请求的数据库指纹来得到同一结构下查询请求的抽象信息,并丢弃掉查询请求中重复的信息,最后基于数据库指纹来对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。通过抽象出的数据库指纹即可实现对全量数据库处理请求的慢查询风险检测。本申请中,通过在请求处理阶段从数据库处理请求中挑选出查询请求,而后抽象出查询请求的数据库指纹即可实现对数据库风险的慢查询分析,无需处理全量的查询请求数据,可以有效地降低数据库慢查询检测过程的计算资源消耗。
附图说明
图1为一个实施例中数据库慢查询检测方法的应用环境图;
图2为一个实施例中数据库慢查询检测方法的流程示意图;
图3为一个实施例中用户与服务交互过程的示意图;
图4为一个实施例中通过数据访问层实现用户与服务交互过程的示意图;
图5为一个实施例中数据库慢查询检测方法的服务链路示意图;
图6为一个实施例中数据库慢查询检测方法的总体流程时序图;
图7为一个实施例中数据库慢查询检测方法的***架构框图;
图8为另一个实施例中数据库慢查询检测方法的流程示意图;
图9为一个实施例中数据库慢查询检测装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本文中,需要理解的是,所涉及的术语:
数据库指纹:通过一个算法,对同一类结构的数据库语句,但是参数不一样的场景,能生成出同样的一个唯一编号,这个编号也可以叫数据库指纹。
本申请实施例提供的数据库慢查询检测方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与***服务器104进行通信,***服务器104通过网络与代理服务器106进行通信,代理服务器106与数据存储***108连接。数据存储***108可以存储***服务器104需要处理的数据。数据存储***108可以集成在代理服务器106上,也可以放在云上或其他服务器上。当用户需要进行数据库的风险检测时,可以通过代理服务器106来收集数据库的慢查询风险信息,首先客户可以通过终端102向***服务器104发起业务请求,而当***服务器接收到业务请求,并确定业务请求中涉及对数据库的处理时,可以向代理服务器106发送数据库处理请求,而后代理服务器106获取数据库处理请求;确定数据库处理请求中所包含的查询请求;提取查询请求的数据库指纹;基于数据库指纹对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。同时,代理服务器106还可以执行相应的数据库处理请求,并向***服务器104返回相应结果。其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。***服务器104和代理服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据库慢查询检测方法,以该方法应用于图1中的代理服务器106为例进行说明,包括以下步骤:
步骤201,获取数据库处理请求。
其中,数据库处理请求是指需要对数据库中数据进行操作的请求,数据库处理请求中具体包含有数据库处理语句,可以依据数据库处理请求中的数据库处理语句对数据存储***108进行对应的操作处理。
具体地,当终端102方的用户需要处理***业务时,可以向***服务器104发起业务处理请求,来调用***服务器104搭载的服务,而***服务器104则可以解析业务处理请求来进行业务处理,为终端102提供服务,同时如果***服务器104在解析业务处理请求,并确定业务处理请求涉及到对数据库的处理后,可以根据该业务处理请求生成对应的数据库处理请求,并将数据库处理请求发送至代理服务器106,由代理服务器106执行数据库处理和数据库处理相关的数据库慢查询检测处理。而代理服务器106则可以在接收到数据库处理请求,通过识别数据库处理请求的请求类型来进行数据库处理以及数据库慢查询检测等相关的处理。在其中一个实施例中,数据存储***108可以通过结构化查询语言数据库(Structured Query Language server database,SQL)实现,此时,数据库处理请求中携带的数据库处理语句即为SQL语句。如图3所示,通过***服务器104为用户提供服务的过程可以抽象为户和服务进行交互,服务和数据库进行交互。而本申请的方案整体的框架图则如图4所示,通过在图3现有服务和数据库中间增加一个通过代理服务器实现的数据访问层,从而可以在不入侵服务和数据库代码的情况下,实现一个高效的慢查询发现的数据库慢查询检测***。
步骤203,确定数据库处理请求中所包含的查询请求。
其中,查询请求是指用于查询数据存储***108内数据的请求类型,可以通过对数据库处理语句的类型识别,确定其中属于查询类型的语句,而查询类型的语句所对应的请求即为查询请求。数据存储***具体可以以数据库形式实现,数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。例如对于SQL数据库,其查询处理语句可以包括带数据库名的查询处理语句、不带数据库名的查询处理语句和预处理语句,因此这三种语句对应的数据库处理请求都是查询请求,可以提取数据库指纹。
具体地,数据库处理请求中包含有不同类型的数据库处理语句,而本申请只需针对慢查询的风险进行检测,因此代理服务器106在接收到数据库处理请求并进行处理时,可以先从数据库处理请求中识别出查询请求,从而在查询请求的基础上确定慢查询风险。在这个过程中,可以通过指纹提取的算法对查询请求中所包含的数据库查询处理语句进行指纹提取的处理,得到数据库指纹,并执行相应的查询处理。而对于非查询类的其他数据更新语句或者数据删除语句,则可以直接通过代理服务器106向数据存储***108进行处理,并返回处理结果给到***服务器104。
步骤205,提取查询请求的数据库指纹。
其中,数据库指纹是指通过指纹生成的算法,对同一类结构的数据库语句,但是参数不一样的场景,能生成出同样的一个唯一编号,生成的唯一编号即为数据库指纹。
具体地,可以在确定查询请求后,直接从查询请求中提取出相应的数据库指纹。对于指纹提取的过程,具体可以通过指纹提取的算法,来对查询请求中所包含的数据库查询处理语句进行指纹提取的处理,得到数据库指纹,并执行相应的查询处理。而对于非查询类的请求语句,比如数据更新语句或者数据删除语句,则可以直接通过代理服务器106向数据存储***108进行处理,并返回处理结果给到***服务器104。即对于数据库处理请求,代理服务器106可以穿透执行数据库处理请求,得到并反馈数据库处理结果。穿透执行是指穿透代理服务器106所在的数据访问层来向数据存储***108执行数据库处理请求,得到数据库处理请求对应的数据库处理结果,而后再向***服务器104反馈该数据库处理结果的过程。在本申请的方案中,如图4所示,通过在现有服务和数据库中间增加一个通过代理服务器106实现的数据访问层,从而可以在不入侵服务和数据库代码的情况下,实现一个高效的慢查询发现的数据库慢查询检测***。而数据访问层具体包括了用于处理数据库处理请求的代理服务和慢查询分析服务,其中代理服务器106可以从服务中接收数据库处理请求,而后识别出其中的查询请求,并提取查询请求的数据库指纹供慢查询分析服务器进行慢查询的分析检测。同时,代理服务器106还负责对接收到的二进制包进行转发,对于从数据库到服务的请求,代理服务器106不做处理,对于从服务到数据库的请求,代理服务器106需要先调用过滤模块进行处理,识别出查询请求,而为了保证代理在生产环境运行时的稳定性和代理多重类型数据库时的通用性,无论过滤模块返回的结果是什么,代理服务器106都不应该阻塞这个数据库处理请求,并保证服务发送的数据库处理请求语句一定能执行成功,因此代理服务器106在进行数据库处理请求的转化处理时,可以穿透执行数据库处理请求,并得到并反馈数据库处理结果。
步骤207,基于数据库指纹对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。
其中,检测处理是指通过数据库指纹对当前场景下数据库处理请求是否存在慢查询的风险进行检测,基于数据库指纹对数据库处理请求进行检测处理的过程,具体可以理解为是由一个一个的慢查询判断规则来对数据库指纹对应的数据库查询处理语句进行校验的过程,校验过程可以参考热插拔插件的形式,根据配置递归所有慢查询判断规则的插件去判断数据库指纹的风险。
具体地,数据库慢查询风险的原因是多纬度的,有可能是数据库中表结构不合理;有可能是数据库结构不合理;也有可能是数据库配置不够。所以当前的数据慢查询分析都是在慢查询发生之后,再通过检验数据库日志来进行告警。而本申请则是通过将查询请求抽象为数据库指纹,而后基于数据库指纹对数据库处理请求进行检测处理,丢弃掉重复的数据,相比起进行全量的请求检测,可以有效的减少检测过程处理的数据量,从而减少慢查询检测分析过程的资源消耗。同时,本申请的方案通过在***服务器104和数据存储***108之间***模块化的代理服务器106实现,通过模块化设计,针对不同的数据库,只需要重新实现部分模块后就能适配,同时在慢查询的发现能力上支持插件式校验,可以根据实际应用场景进行设计,同时在部署本发明后,只需要更改服务原本的数据库地址就能生效,减轻接入的成本。在具体实施例中,本申请的方案还可以再得到数据库指纹后,异步对数据库指纹进行检测分析,从而能够提前发现慢查询的风险,而不是在已经之后慢查询之后才告警。通过类似风控的思想,通过插件式的数据库慢查询检测分析模块,来检测是否存在慢查询的风险,可以有效保证慢查询风险检测的时效性,提高检测效率。此外,对于容器或远程过程调用(Remote Procedure Call,RPC)微服务架构的场景,代理模块可以融合至挎斗模式(Sidecar)或框架能力当中。
上述数据库慢查询检测方法,通过在获取数据库处理请求后;确定数据库处理请求中所包含的查询请求,并提取查询请求的数据库指纹。从而在处理数据库请求的过程中,提取查询请求的数据库指纹来得到同一结构下查询请求的抽象信息,并丢弃掉查询请求中重复的信息,最后基于数据库指纹来对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。通过抽象出的数据库指纹即可实现对全量数据库处理请求的慢查询风险检测。本申请中,通过在请求处理阶段从数据库处理请求中挑选出查询请求,而后抽象出查询请求的数据库指纹即可实现对数据库风险的慢查询分析,无需处理全量的查询请求数据,可以有效地降低数据库慢查询检测过程的计算资源消耗。
在一个实施例中,步骤203包括:提取数据库处理请求中的数据库处理语句;识别数据库处理语句中的查询处理语句,将查询处理语句对应的数据库处理请求确定为查询请求。
其中,查询处理语句是指用于进行查询处理的数据库语句,与之对应的数据库处理请求为查询请求。
具体地,本申请的方案可以通过提取的数据库指纹来代表一类查询处理语句进行慢查询检测的处理。而提取数据库指纹之前,还需要先识别出哪些数据库处理请求属于查询请求,并提取出相应的数据库查询处理语句。本实施例通过提取出数据库处理请求中的数据库处理语句,而后对数据库处理语句进行处理,从而实现语句类型的识别和数据库指纹的提取。在一个具体实施例中,在识别语句类型时,可以先确定数据库处理语句所属的数据库语言类型,而后通过数据库处理语句中的关键词来识别数据库处理语句的类型,确定数据库处理语句中的查询处理语句。而后通过指纹生成算法对查询处理语句进行指纹提取处理,得到每个查询处理语句对应的数据库指纹。本实施例中,通过识别数据库处理语句中的查询处理语句而后进行指纹提取,并实现慢查询检测,可以有效保证指纹提取和慢查询检测的准确性。
在一个实施例中,提取查询请求的数据库指纹包括:确定查询请求中查询处理语句的查询处理语句类型;基于查询处理语句的查询处理语句类型进行查询响应处理,得到查询请求的完整查询信息;通过指纹生成算法对完整查询信息进行指纹提取处理,得到查询请求对应的数据库指纹。
其中,查询处理语句的语句类型包含多种,例如带数据库名的查询处理语句,不带数据库名的查询处理语句和预处理语句等。查询响应处理是指根据查询处理语句的语句类型来进行相应处理,对查询处理语句进行修改,例如对于不带数据库名的查询处理语句,可以通过查询响应处理得到相应的数据库名后,得到带数据库名的完整查询处理语句。指纹生成算法是指可以对同一类结构的数据库查询处理语句,可以生成唯一编号的算法。指纹生成算法在生成数据库指纹时,具体可以通过替换数据库查询处理语句中的参数来构建数据库指纹。例如对于SQL查询处理语句,通过相应的SQL指纹生成算法对查询处理语句进行指纹提取处理,得到该SQL查询处理语句对应的数据库指纹。
具体地,由于不同类型的查询处理语句所查询内容可能是相同,但是查询处理语句的结构却不相同,因此可以在进行指纹提取处理之前,先确定查询处理语句的查询处理语句类型;基于查询处理语句的语句类型进行查询响应处理,得到查询指令的完整查询信息,从而可以通过指纹生成算法对完整查询信息进行指纹提取处理,得到数据库处理请求对应的数据库指纹。在具体实施例中,以MySQL数据库为例,其能查询数据的语句有三种,分别是带了数据库名的查询处理语句,不带数据库名的查询处理语句和预处理语句。在进行指纹提取时,首先先判断语句是否为这三种查询类型,如果是别的类型比如更新或者删除语句,直接返回成功即可。如果是这三种语句,则需要更能根据不同的语句类型去做响应的处理,对于带了数据库名的查询处理语句可以直接将其作为完整查询信息进行处理,而对于不带数据库名的查询处理语句,则需要先查找数据库报文数据;而后基于数据库报文数据确定数据库信息缓存;最后基于数据库信息缓存为不带数据库名的查询处理语句添加数据库名信息,得到查询指令的完整查询信息。具体需要从链接数据库的报文中或者上一次切换数据库的报文中提取出数据库信息缓存,得到数据库名,而后将数据库名组装在原有语句中,得到新的查询处理语句作为完整查询信息。而对于预处理类型的语句,还需要额外存储第一次传入的准备(prepare)语句和第一次传入的存储过程(exec)参数,本实施例中,通过识别查询处理语句的查询处理语句类型来对查询处理语句进行查询响应处理,从而得到完整的查询处理语句来进行数据库指纹的提取处理,能有效保证数据库指纹提取的准确性。
在一个实施例中,通过指纹生成算法对完整查询信息进行指纹提取处理,得到查询请求对应的数据库指纹包括:通通过指纹生成算法识别完整查询信息中的参数信息;对完整查询信息中的参数信息进行抽象处理,得到数据库处理请求对应的数据库指纹。
具体地,参数信息是指完整查询信息对应数据库查询处理语句中可变参数的相关信息。对于通过指纹生成算法提取数据库指纹的过程,具体可以通过先确定完整查询信息中所包含的参数,而后修改这些参数信息来对完整查询信息进行处理,从而得到数据库指纹,具体可以直接对完整查询信息中的参数信息进行抽象处理,得到数据库处理请求对应的数据库指纹。实际对于慢查询检测分析的处理过程,可以直接对完整查询信息进行分析实现,但是为了增加慢查询检测过程的处理性能,减少计算资源的消耗,可以通过计算数据库指纹,来对完整查询信息进行去重,从而根据不同的数据库语句类型实现对应的语义处理,例如对于select a from b where c=d类型的SQL语句,再通过抽象处理后,可以得到数据库指纹对应的语句为select a from b where c=?,从而使得数据库处理请求需要对一种SQL语句切换参数d执行多次时,提取得到相同的数据库指纹,而对应的数据库指纹检测处理也只需要执行一次,从而降低数据库慢查询风险检测过程的计算量,保证数据库慢查询检测的运算效率。本实施例中,通过对完整查询信息中的参数信息进行抽象处理,可以有效地将同一类结构的数据库查询处理语句转化为相同的数据库指纹,从而降低数据库风险的慢查询分析的计算资源消耗。
在其中一个实施例中,方法还包括:当在指纹库内未查找到数据库指纹对应的指纹数据时,将数据库指纹存储在指纹库。
其中,指纹库是指用于存储数据库指纹的数据库,可以将已经检验或者待检验的数据库指纹存储到指纹库中,并基于指纹库中的数据库指纹来对当前提取出的数据库进行过滤处理。
具体地,在确定数据库处理请求中所包含查询请求的数据库指纹,还可以对提取出的数据库指纹进行过滤处理,从而降低数据库指纹检测的数据量,提高检测过程的处理效率。而对于过滤处理,具体可以将当前提取出的数据库指纹与数据库中已存在的数据库指纹进行一一比对,确定数据库中是否存在该数据库指纹,如果存在的话就说明无需再将数据库指纹保存到指纹库再进行校验。而若是在指纹库内未查找到数据库指纹对应的指纹数据时,则可以将数据库指纹存储在指纹库中,而基于数据库指纹对数据库处理请求进行检测处理,则是指通过慢查询风险检测分析服务来对指纹库中存在的数据库指纹进行一一校验,得到相应的慢查询风险的检测结果。本实施例中,通过在指纹库内未查找到数据库指纹对应的指纹数据时,将数据库指纹存储在指纹库,可以有效地将未录入指纹库的新数据库指纹保存到指纹库来进行识别,从而保证数据库慢查询检测分析的覆盖度,保证检测效果。
在一个实施例中,方法还包括:确定指纹库中数据库指纹的创建时间;识别指纹库中创建时间超过时间阈值的过期指纹,并对过期指纹作删除处理。
其中,数据库指纹的创建时间是指通过指纹生成算法生成指纹,并将生成的数据库指纹保存到指纹库中的时间。而时间阈值则是根据实际业务场景设置的一个数据库指纹过期时间对应的数值,由于在数据库中,部分数据库语句可能随着表结构的改变而失去作用,因此有必要设置一个时间阈值来识别过期的数据库指纹,保证慢查询检测分析的效率。
具体地,本申请的方案中还可以通过对指纹库内数据库指纹的定期检测来识别其中的过期指纹,并对过期指纹进行删除,从而保证数据库慢查询检测的效率。而检测的方法具体是通过确定指纹库中数据库指纹的创建时间;数据库指纹在生成时都会被添加相应的创建时间的信息,当数据库指纹被保存到指纹库后,即可通过读取数据库指纹的相关信息来确定数据库指纹的创建时间,而后将当前时间与阈值时间对比,确定当前时间对应的过期时间,通过对比创建时间和过期时间即可确定创建时间是否超过时间阈值,如果创建时间在过期时间之前,则说明超过时间阈值,而若是创建时间在过期时间之后,则说明未超过时间阈值。如此完成对指纹库内所有数据库指纹的过期校验后,即可识别指纹库中创建时间超过时间阈值的过期指纹,并对过期指纹作删除处理。在其中一个实施例中,过期指纹删除的功能可以通过数据滚动模块实现,数据滚动模块是和数据库指纹防重的理念相配合产生的,当使用数据库指纹进行慢查询检测后,同一类的数据库查询处理语句只会执行一次检测,这在短时间内是没问题的,但是可能在几周或者几个月后,数据库中表结构有了改变或者服务已经移除了这个数据库查询处理语句,且以后不会再调用了。这时候就需要慢查询检测的***能定期滚动指纹库中的数据库指纹,防止一类数据库查询处理语句永远不执行或者执行多余的一类语句。数据滚动模块可以根据数据的创建时间,定期进行清理。在清理后,被删除的数据库指纹就会视为没有被执行过,当重新创建该数据库指纹时,也会当做新数据库指纹重新录入并进行相应的慢查询检测处理。本实施例中,通过识别指纹库中的过期指纹进行删除处理,可以有效地在数据库结构或者数据表结构发生变化的情况下,完成对指纹库内数据库指纹的维护,保证指纹库内数据库指纹的有效性。
在一个实施例中,步骤207包括:基于数据库指纹异步对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。
具体地,异步与同步是相对的概念,指的是一个异步过程的执行将不再与原先的处理序列存在顺序关系。而在本申请的方案中,指的是将基于数据库指纹对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果,这个慢查询检测过程与执行数据库处理请求这两个过程进行异步处理,从而实现错峰处理。通过异步对数据库指纹进行处理,采用异步的架构可以有效的削峰,防止因为对数据库并发大量的慢查询检测请求导致问题。例如对于购物***,当购物节活动时,往往会出现在几分钟内集中的高并发请求,此时的并发量可能是平时的上百倍,可以通过异步的削峰来保证这种情况下数据库处理请求的正常执行和对数据库处理请求的慢查询检测。通过异步处理可以通过数据库指纹记录下购物节活动时的请求状况,而后在峰值过后再执行慢查询的检测分析,而数据库查询处理语句的不合理,可能在低并发下会因为数据库的性能过高被隐藏,只有在请求量激增的时候凸显,而此时出问题的代价往往也是最高的。因此在本实施例中,通过异步对数据库指纹进行分析,可以在后续出现慢查询请求之前就提前发现慢查询的可能性并对其进行处理,从而降低出现慢查询的风险,并节省数据库的开发成本。
在一个实施例中,步骤207包括:获取慢查询判断规则的配置;基于慢查询判断规则的配置,以递归方式对数据库指纹进行慢查询风险检测处理,得到数据库处理请求的慢查询检测结果。
具体地,在进行慢查询的检测分析时,可以通过慢查询规则的配置来实现对数据库指纹的检验,在进行检验时,依次对数据库指纹是否触发慢查询规则来进行检验,慢查询规则具体可以以一种类似热插拔插件的形式来完成校验,而校验过程则是根据配置递归所有插件去对数据库指纹进行校验,因此判断是否存在触发慢查询判断规则的风险,当数据库指纹能触发慢查询判断规则时,可以将当前的数据库指纹作为存在慢查询风险的指纹,而未触发时,可以确定当前的数据库指纹通过了慢查询检测分析,暂不存在慢查询风险。在其中一个实施例中,对于基于慢查询判断规则的配置,以递归方式对数据库指纹进行慢查询风险检测处理,得到数据库处理请求的慢查询检测结果的过程,则具体可以基于慢查询判断规则的配置,通过数据库性能分析工具,以递归方式对数据库指纹进行慢查询风险检测处理,得到慢查询基础分析结果;获取数据库处理请求的场景信息;基于慢查询基础分析结果和场景信息对数据库指纹进行慢查询风险分析,得到数据库处理请求的慢查询检测结果。即通过数据库性能分析工具结合数据库指纹的场景来实现慢查询检测,本申请的其中一个特点在于能够提前发现慢查询风险,但是数据库慢查询的风险其实是多纬度的,有可能是数据库中表的结构不合理;有可能是数据库查询语言本身结构不合理;也有可能是数据库配置不够,这也是慢查询分析一般需要慢查询发生之后进行告警的原因,因此本申请在检测数据库处理请求是否有慢查询风险时,也可以需要像风控管理一样,建立好模型后,根据实际的应用场景再进行参数的调整,而对于数据库性能分析工具,则可以根据数据库的具体类型来进行选择,例如对于SQL数据库,其性能检测工具可以为解释(explain)工具。而对于慢查询校验分析的过程,最基本的校验有比如通过解释工具后判断数据库指纹的SQL语句是否用到了键值,或一条SQL语句扫描的行数是否大于了设定好的阈值。而在此基础上的扩展能力,则可以是使用场景相关。例如实际场景中服务会去查询不存在的数据,此时需要替换参数,解释工具才能正常判断是否能使用组件。此外,对于规则的判断过程,性能检测工具还可以判断出当前数据库内数据表和配置表的大概量级,直接将表结构、量级和SQL数据通过接口调用chatgpt等人工智能的大数据模型来辅助进行慢查询的检测分析处理,保证检测分析处理过程的准确性与有效性。此外,对数据库进行慢查询检测分析的方法,除了使用explain这类的数据库分析工具去调用数据库判断外,还可以将表结构和数据库语句、或者explain的返回结果给大数据模型结合业务场景进行判断(例如提前设定好***的每秒查询率,数据库配置、表大致数据量等指标,后续只需传入表结构和数据库查询处理语句即可。本实施例中,通过慢查询判断规则的配置来实现对数据库指纹的慢查询风险检测,可以有效保证慢查询风险检测分析过程的准确性与效率。
在一个实施例中,方法还包括:基于慢查询检测结果识别存在慢查询风险的数据库处理请求;根据存在慢查询风险的数据库处理请求生成风险告警消息;反馈风险告警消息至数据库处理请求的请求方。
具体地,当通过慢查询检测分析确定存在慢查询风险的数据库处理请求后,即可根据这些存在慢查询风险的数据库处理请求进行相应的告警,从而避免后续过程的慢查询的风险。对于告警的过程,具体可以根据存在慢查询风险的数据库处理请求生成风险告警消息;反馈风险告警消息至数据库处理请求的请求方,对于通知的具体方法,可以通过即时通讯软件、短信、邮件或者电话等多种方式进行通知,在实际应用过程中,本申请的数据库慢查询检测可以部署在开发测试环境,第一时间进行数据库慢查询的状况告警,也可以直接部署于生产环境当中,用于对生产环境的服务进行监测。本实施例中,通过在识别出数据库慢查询风险后进行告警,可以有效地在数据库慢查询发生前就完成对数据库中存在的慢查询风险进行识别和告警,可以有效地保证风险识别和告警的准确性和效率,从而降低数据库的慢查询风险概率。
本申请还提供一种应用场景,该应用场景应用上述的数据库慢查询检测方法。具体地,该数据库慢查询检测方法在该应用场景的应用如下:
当用户需要对购物***中的数据库服务进行检测,来提前识别出数据库服务过程中的慢查询风险时,可以通过本申请的数据库慢查询检测方法来实现针对数据库的风险检测。首先,用户可以在原有的购物***中加装搭载本申请数据库慢查询风险检测方法的代理服务器,由代理服务器组成的新链路代替原有链路,来实现购物***服务器和数据库之间的请求转发,具体可以参照图5所示,可以通过代理服务器上的慢查询风险检测***来对数据库查询请求中的慢查询请求进行识别,当发现存在慢查询风险时,代理服务器可以向用户侧反馈相应的告警信息,告知用户侧目前存在的慢查询风险。
而对于数据库慢查询检测的完成流程,则可以参照图6的时序图所示。首先是步骤1,用户可以向购物***的服务器提交请求,调用服务器来执行相应的操作。而购物***的服务器在确认请求涉及数据库的相关处理操作时,可以执行步骤2,提交数据库处理的请求至代理服务器,代理服务器先确定数据库处理请求中所包含查询请求的数据库指纹,如果数据库指纹已经存在于指纹库,则直接从第2步骤执行到第5步骤,直接穿透执行数据库的操作,并得到相应的处理结果。如果指纹不存在,则执行3、4的步骤,存储数据库操作相应的数据库指纹,记录指纹信息,并返回存储的结果。最后将返回的数据库处理结果依次返回到购物***的服务器端和用户端。而本申请的代理服务器则可以在处理过程中收集的数据库指纹,异步分析这些数据库指纹所对应数据库处理请求的慢查询风险,并得到相应的风险分析结果。本申请中代理服务器的***架构则可以参照图7所示,具体包括代理服务和分析服务两个模块,其中代理服务负责代理执行SQL并存储SQL数据。可以分为三个模块,代理接口模块提供接口给服务进行链接,接口需要做到协议无关仅仅是TCP层的数据转发来保证代理的兼容性和可用性。SQL代理模块负责对接收到的二进制包进行转发,对于从数据库到服务的请求,代理模块不做处理,对于从服务到数据库的请求,代理模块需要先调用过滤模块进行处理,为了保证代理在生产环境运行时的稳定性和代理多重类型数据库时的通用性,无论过滤模块返回的结果是什么,代理模块都不应该阻塞这个请求,保证服务的语句一定能执行成功。SQL过滤模块大致分为SQL指纹去重的部分和按照SQL的类型,进行入库处理的部分。对于MySQL数据库,能查询数据的语句有三种,分别是带了数据库名的查询处理语句,不带数据库名的查询处理语句和预处理语句。可以确定查询处理语句的查询处理语句类型;基于查询处理语句的语句类型进行查询响应处理,得到查询指令的完整查询信息;通过指纹生成算法对完整查询信息进行指纹提取处理,得到数据库处理请求对应的数据库指纹。例如对于不带数据库名的查询处理语句,可以查找数据库报文数据;基于数据库报文数据确定数据库信息缓存;基于数据库信息缓存为不带数据库名的查询处理语句添加数据库名信息,得到查询指令的完整查询信息。而对于数据库指纹生成的过程,则可以通过指纹生成算法识别完整查询信息中的参数信息;而后对完整查询信息中的参数信息进行抽象处理,得到数据库处理请求对应的数据库指纹。
而分析服务的模块则负责异步对代理服务存储的请求信息进行处理,采用异步的架构可以有效的削峰,防止因为对数据库并发大量的慢查询检测请求而导致问题。分析服务的核心是数据滚动模块和SQL分析模块。数据分析模块可以确定指纹库中数据库指纹的创建时间;识别指纹库中创建时间超过时间阈值的过期指纹,并对过期指纹作删除处理。而SQL分析模块则是由一个一个的慢查询判断规则组成,实现方式应该是以一种类似热插拔插件的形式,根据配置递归所有插件去判断风险。在进行慢查询检测分析时,可以获取慢查询判断规则的配置;而后基于慢查询判断规则的配置,通过数据库性能分析工具如explain,以递归方式对数据库指纹进行慢查询风险检测处理,得到慢查询基础分析结果;获取数据库处理请求的场景信息;基于慢查询基础分析结果和场景信息对数据库指纹进行慢查询风险分析,得到数据库处理请求的慢查询检测结果。最后当检测到存在慢查询风险时,即可向购物***方进行告警。
在一个实施例中,本申请的数据库慢查询检测方法的完整流程可以参照图8所示,包括:
步骤801,获取数据库处理请求。步骤803,提取数据库处理请求中的数据库处理语句。步骤805,识别数据库处理语句中的查询处理语句。步骤807,确定查询处理语句的查询处理语句类型。步骤809,基于查询处理语句的语句类型进行查询响应处理,得到查询指令的完整查询信息。步骤811,通过指纹生成算法对完整查询信息进行指纹提取处理,得到数据库处理请求对应的数据库指纹。步骤813,穿透执行数据库处理请求,得到并反馈数据库处理结果。步骤815,获取慢查询判断规则的配置。步骤817,基于慢查询判断规则的配置,通过数据库性能分析工具,以递归方式对数据库指纹进行慢查询风险检测处理,得到慢查询基础分析结果。步骤819,获取数据库处理请求的场景信息。步骤821,基于慢查询基础分析结果和场景信息,对数据库指纹进行慢查询风险分析,得到数据库处理请求的慢查询检测结果。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据库慢查询检测方法的数据库慢查询检测装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据库慢查询检测装置实施例中的具体限定可以参见上文中对于数据库慢查询检测方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种数据库慢查询检测装置,包括:
请求获取模块902,用于获取数据库处理请求。
查询请求识别模块904,用于确定数据库处理请求中所包含的查询请求。
指纹提取模块906,用于提取查询请求的数据库指纹。
风险检测模块908,用于基于数据库指纹对数据库处理请求进行分析,得到数据库处理请求的慢查询检测结果。
在一个实施例中,查询请求识别模块902具体用于:提取数据库处理请求中的数据库处理语句;识别数据库处理语句中的查询处理语句,将查询处理语句对应的数据库处理请求确定为查询请求。
在一个实施例中,指纹提取模块904具体用于:确定查询请求中查询处理语句的查询处理语句类型;基于查询处理语句的查询处理语句类型进行查询响应处理,得到查询请求的完整查询信息;通过指纹生成算法对完整查询信息进行指纹提取处理,得到查询请求对应的数据库指纹。
在一个实施例中,查询处理语句的语句类型包括不带数据库名的查询处理语句。指纹提取模块904具体用于:查找数据库报文数据;基于数据库报文数据确定数据库信息缓存;基于数据库信息缓存为不带数据库名的查询处理语句添加数据库名信息,得到查询请求的完整查询信息。
在一个实施例中,指纹提取模块904具体用于:通过指纹生成算法识别完整查询信息中的参数信息;对完整查询信息中的参数信息进行抽象处理,得到数据库处理请求对应的数据库指纹。
在一个实施例中,还包括指纹存储模块,用于:当在指纹库内未查找到数据库指纹对应的指纹数据时,将数据库指纹存储在指纹库。
在一个实施例中,还包括过期指纹检测模块,用于:确定指纹库中数据库指纹的创建时间;识别指纹库中创建时间超过时间阈值的过期指纹,并对过期指纹作删除处理。
在一个实施例中,风险检测模块908具体用于:基于数据库指纹异步对数据库处理请求进行检测处理,得到数据库处理请求的慢查询检测结果。
在一个实施例中,风险检测模块908具体用于:获取慢查询判断规则的配置;基于慢查询判断规则的配置以递归方式对数据库指纹进行慢查询风险检测处理,得到数据库处理请求的慢查询检测结果。
在一个实施例中,风险检测模块908具体用于:基于慢查询判断规则的配置,通过数据库性能分析工具以递归方式对数据库指纹进行慢查询风险检测处理,得到慢查询基础分析结果;获取数据库处理请求的场景信息;基于慢查询基础分析结果和场景信息对数据库指纹进行慢查询风险分析,得到数据库处理请求的慢查询检测结果。
在一个实施例中,还包括风险告警模块,用于:基于慢查询检测结果识别存在慢查询风险的数据库处理请求;根据存在慢查询风险的数据库处理请求生成风险告警消息;反馈风险告警消息至数据库处理请求的请求方。
上述数据库慢查询检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库慢查询检测相关的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库慢查询检测方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据库慢查询检测方法,其特征在于,所述方法包括:
获取数据库处理请求;
确定所述数据库处理请求中所包含的查询请求;
提取所述查询请求的数据库指纹;
基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果。
2.根据权利要求1所述的方法,其特征在于,所述确定所述数据库处理请求中所包含的查询请求包括:
提取所述数据库处理请求中的数据库处理语句;
识别所述数据库处理语句中的查询处理语句,将查询处理语句对应的数据库处理请求确定为查询请求。
3.根据权利要求1所述的方法,其特征在于,所述提取所述查询请求的数据库指纹包括:
确定所述查询请求中查询处理语句的查询处理语句类型;
基于所述查询处理语句的查询处理语句类型进行查询响应处理,得到所述查询请求的完整查询信息;
通过指纹生成算法对所述完整查询信息进行指纹提取处理,得到所述查询请求对应的数据库指纹。
4.根据权利要求3所述的方法,其特征在于,所述查询处理语句的查询处理语句类型包括不带数据库名的查询处理语句;
所述基于所述查询处理语句的查询处理语句类型进行查询响应处理,得到所述查询请求的完整查询信息包括:
查找数据库报文数据;
基于所述数据库报文数据确定数据库信息缓存;
基于所述数据库信息缓存为所述不带数据库名的查询处理语句添加数据库名信息,得到所述查询请求的完整查询信息。
5.根据权利要求3所述的方法,其特征在于,所述通过指纹生成算法对所述完整查询信息进行指纹提取处理,得到所述查询请求对应的数据库指纹包括:
通过指纹生成算法识别所述完整查询信息中的参数信息;
对所述完整查询信息中的参数信息进行抽象处理,得到所述数据库处理请求对应的数据库指纹。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在指纹库内未查找到所述数据库指纹对应的指纹数据时,将所述数据库指纹存储在所述指纹库。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定指纹库中数据库指纹的创建时间;
识别所述指纹库中创建时间超过时间阈值的过期指纹,并对所述过期指纹作删除处理。
8.根据权利要求1所述的方法,其特征在于,所述基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果包括:
基于所述数据库指纹异步对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果。
9.根据权利要求1所述的方法,其特征在于,所述基于所述数据库指纹对所述数据库处理请求进行检测处理,得到所述数据库处理请求的慢查询检测结果包括:
获取慢查询判断规则的配置;
基于所述慢查询判断规则的配置,以递归方式对所述数据库指纹进行慢查询风险检测处理,得到所述数据库处理请求的慢查询检测结果。
10.根据权利要求9所述的方法,其特征在于,所述基于所述慢查询判断规则的配置,以递归方式对所述数据库指纹进行慢查询风险检测处理,得到所述数据库处理请求的慢查询检测结果包括:
基于所述慢查询判断规则的配置,通过数据库性能分析工具,以递归方式对所述数据库指纹进行慢查询风险检测处理,得到慢查询基础分析结果;
获取所述数据库处理请求的场景信息;
基于所述慢查询基础分析结果和所述场景信息,对所述数据库指纹进行慢查询风险分析,得到所述数据库处理请求的慢查询检测结果。
11.根据权利要求1至10任意一项所述的方法,其特征在于,所述方法还包括:
基于所述慢查询检测结果识别存在慢查询风险的数据库处理请求;
根据所述存在慢查询风险的数据库处理请求生成风险告警消息;
反馈所述风险告警消息至所述数据库处理请求的请求方。
12.一种数据库慢查询检测装置,其特征在于,所述装置包括:
请求获取模块,用于获取数据库处理请求;
查询请求识别模块,用于确定所述数据库处理请求中所包含的查询请求;
指纹提取模块,用于提取所述查询请求的数据库指纹;
风险检测模块,用于基于所述数据库指纹对所述数据库处理请求进行分析,得到所述数据库处理请求的慢查询检测结果。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937832.5A CN116701441A (zh) | 2023-07-28 | 2023-07-28 | 数据库慢查询检测方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310937832.5A CN116701441A (zh) | 2023-07-28 | 2023-07-28 | 数据库慢查询检测方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701441A true CN116701441A (zh) | 2023-09-05 |
Family
ID=87843548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310937832.5A Pending CN116701441A (zh) | 2023-07-28 | 2023-07-28 | 数据库慢查询检测方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701441A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613176A (zh) * | 2020-12-23 | 2021-04-06 | 贝壳技术有限公司 | 慢sql语句预测方法及*** |
CN114265857A (zh) * | 2021-11-16 | 2022-04-01 | 阿里巴巴(中国)有限公司 | 查询语句处理方法以及装置 |
CN115454804A (zh) * | 2022-09-23 | 2022-12-09 | 深圳前海微众银行股份有限公司 | 结构化查询语言的检测方法、装置和电子设备 |
-
2023
- 2023-07-28 CN CN202310937832.5A patent/CN116701441A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613176A (zh) * | 2020-12-23 | 2021-04-06 | 贝壳技术有限公司 | 慢sql语句预测方法及*** |
CN114265857A (zh) * | 2021-11-16 | 2022-04-01 | 阿里巴巴(中国)有限公司 | 查询语句处理方法以及装置 |
CN115454804A (zh) * | 2022-09-23 | 2022-12-09 | 深圳前海微众银行股份有限公司 | 结构化查询语言的检测方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034993B (zh) | 对账方法、设备、***及计算机可读存储介质 | |
CN110347716B (zh) | 日志数据处理方法、装置、终端设备及存储介质 | |
CN107451149B (zh) | 流量数据查询任务的监控方法及其装置 | |
CN111881011A (zh) | 日志管理方法、平台、服务器及存储介质 | |
CN111752799A (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
CN110928906A (zh) | 基于flink仅一次写入carbonData的方法 | |
US10250550B2 (en) | Social message monitoring method and apparatus | |
CN110321392A (zh) | 基于传感器监测数据文件的数据库管理*** | |
CN110874291A (zh) | 一种异常容器实时检测方法 | |
CN110333990B (zh) | 数据处理方法以及装置 | |
US20180240053A1 (en) | System and Method for Associating a Multi-segment Component Transaction | |
CN116303628B (zh) | 基于Elasticsearch的告警数据查询方法、***及设备 | |
CN112052259A (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
CN110457279B (zh) | 数据离线扫描方法、装置、服务器及可读存储介质 | |
CN114911872B (zh) | 内外网数据同步方法、装置、***、外网服务器及存储介质 | |
CN116701441A (zh) | 数据库慢查询检测方法、装置、计算机设备和存储介质 | |
CN112181994B (zh) | 运维大数据的分布式内存数据库的刷新方法、装置、介质 | |
CN113868138A (zh) | 测试数据的获取方法、***、设备及存储介质 | |
CN117573428B (zh) | 容灾备份方法、装置、计算机设备和存储介质 | |
CN118260273B (zh) | 一种基于企业数据的数据库存储优化方法、***及介质 | |
CN117950942A (zh) | 日志管理方法、装置、设备、存储介质和程序产品 | |
CN117389908B (zh) | 接口自动化测试用例的依赖关系分析方法、***及介质 | |
CN114840593A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN117520112A (zh) | 计算任务的提效分析处理方法、装置、设备和存储介质 | |
CN118113670A (zh) | 一种分布式日志的存储方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |