CN112540897A - 一种数据库监控方法、装置、服务器及介质 - Google Patents
一种数据库监控方法、装置、服务器及介质 Download PDFInfo
- Publication number
- CN112540897A CN112540897A CN202011445234.9A CN202011445234A CN112540897A CN 112540897 A CN112540897 A CN 112540897A CN 202011445234 A CN202011445234 A CN 202011445234A CN 112540897 A CN112540897 A CN 112540897A
- Authority
- CN
- China
- Prior art keywords
- statement
- determining
- database
- execution
- virtual machine
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
-
- 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/21—Design, administration or maintenance of databases
-
- 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
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种数据库监控方法、装置、服务器及介质,包括:在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。在目标虚拟机运行时,通过本方法获取到的监控信息、指令偏移和语句类型,在减少运算量的前提下,可以提高定位目标虚拟机运行中执行时间最长目标语句的效率,实现了快速目标定位语句。
Description
技术领域
本发明实施例涉及数据库技术,尤其涉及一种数据库监控方法、装置、服务器及介质。
背景技术
数据库***是上层应用普遍使用的数据管理***,在数据库***的使用过程中经常遇到语句块的性能瓶颈问题,找出语句块中性能较慢的语句,进行分析并优化是解决数据库***性能瓶颈问题的关键。对一个单条SQL语句,可以将其拆分成多个计划节点操作符,然后统计涉及SQL语句操作符的时间。但是,这种方法没有统计具体语句块的时间,其中,语句块可以包括过程/函数调用、动态执行和SQL语句等。因此,不能快速找出慢语句。对数据库中慢语句的定位仍然是首先要解决的技术问题。
现有技术中,为了记录语句块中过程/函数调用、SQL语句或者动态执行的执行时间,可以在过程/函数调用、SQL语句或者动态执行前后的代码里添加print来打印时间信息,进而确定执行较慢的语句。现有技术类似二分法,同时也可以记录过程/函数调用、SQL语句或者动态执行。
但是,现有技术的运算量较大,定位慢语句花费的时间较长,不能有效解决定位语句慢的技术问题。
发明内容
本发明提供一种数据库监控方法、装置、服务器及介质,以实现快速定位虚拟机运行中执行时间最长的语句。
第一方面,本发明实施例提供了一种数据库监控方法,包括:
在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
第二方面,本发明实施例还提供了一种数据库监控装置,包括:
第一执行模块,用于在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
第二执行模块,用于获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
确定模块,用于根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据库监控方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的数据库监控方法。
本发明通过在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。本发明提供的数据库监控方法,通过依次获取数据库语句块的监控信息、数据库语句块所包含语句的指令偏移和语句类型,确定具体语句的执行时间,并根据执行时间确定目标虚拟机中执行时间最长的目标句,解决了现有技术需要在过程/函数调用、SQL语句或者动态执行前后的代码里添加print来打印时间信息,进而确定目标虚拟机中执行时间最长的目标语句,提升了确定目标虚拟机中执行时间最长的目标语句的效率。
附图说明
图1为本发明实施例一提供的一种数据库监控方法的流程图;
图2a为本发明实施例一提供的一种数据库监控方法中过程/函数调用的栈帧中第一调用者210a与第一被调用者220a的关系示例图;
图2b为本发明实施例一提供的一种数据库监控方法中SQL语句的栈帧中第二调用者210b、第二被调用者220b和第二真正被调用者230b以及动态执行的栈帧中第三调用者210c、第三被调用者220c和第三真正被调用者230c的关系示例图;
图3为本发明实施例二提供的一种数据库监控方法的流程图;
图4a为本发明实施例二提供的数据库监控方法中调用过程/函数中的指令偏移示例图;
图4b为本发明实施例二提供的数据库监控方法中SQL语句中的指令偏移示例图;
图4c为本发明实施例二提供的数据库监控方法中动态执行中的指令偏移示例图;
图5为本发明实施例三提供的一种数据库监控装置的结构图;
图6为本发明实施例四提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
数据库核心执行引擎可以包括虚拟机,虚拟机可以执行生成了执行计划的数据库语句块。虚拟机执行数据库语句块时,可以生成目标虚拟机,目标虚拟机可以按照执行计划的指令执行。虚拟机可以包括地址空间,多个数据库语句块并发时,每个数据库语句块都拥有对应的虚拟机,数据库语句块所包含的指令都可以按照顺序进行执行。
另外,指令可以从0地址开始编址,在指令的执行过程中可以生成栈帧结构,栈帧可以用于构成不同种类的数据块语句,还可以用于存储虚拟机执行方法(MTEHOD)时调用涉及的相关信息的记录单元。当前栈帧可以为虚拟机运行时当前使用的栈帧,所有的栈帧串起来可以组成一个完整的虚拟机的栈。当然,过程/函数调用、SQL语句和动态执行可以包含在一个总的栈帧中,总的栈帧可以为最大的栈帧。
实施例一
图1为本发明实施例一提供的数据库监控方法的流程图,本实施例可适用于目标虚拟机运行时需要快速找出执行时间最长的目标语句的情况,该方法可以由服务器来执行,具体包括如下步骤:
步骤110、在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息。
具体地,数据库语句块在目标虚拟机中执行时,可以基于目标虚拟机获取其执行过程的监控信息,监控信息可以包括数据库语句块的执行时间,根据执行时间,可以找出虚拟机运行时,执行时间较长的数据库语句块。数据库语句块的执行时间也可以在指令生成过程中获取。
其中,语句块是组成PL/SQL的基本单元,语句块可以包括:a.动态执行SQL,其中,动态执行里面的语句里面是SQL;b.SQL,本实施例中SQL语句可以泛指普通静态sql语句;c.函数/过程调用语句。此外,语句块还可以包括PL/SQL的其他语句类型,例如,if语句和case语句等流程控制语句。
执行时间可以包括数据库语句块运行开始到结束的时间,具体而言,过程/函数调用中,执行时间可以为栈帧开始创建到栈帧结束的时间;SQL语句中,执行时间可以为SQL语句执行计划树开始创建到释放的时间;动态执行中,执行多个语句时,产生新栈帧统计的语句时间总和可以为执行时间。
虚拟机可以执行数据库语句块,所以,对于数据库语句块,可以从执行引擎的入口开始,在执行引擎的结构上统计执行时间。
监控信息还可以包括执行号、调用者信息和当前方法名,执行号可以为数据库语句块包括的语句的执行号。
另外,图2a为本发明实施例一提供的一种数据库监控方法中过程/函数调用的栈帧中第一调用者210a与第一被调用者220a的关系示例图,图2b为本发明实施例一提供的一种数据库监控方法中SQL语句的栈帧中第二调用者210b、第二被调用者220b和第二真正被调用者230b以及动态执行的栈帧中第三调用者210c、第三被调用者220c和第三真正被调用者230c的关系示例图,如图2a所示,过程/函数调用的栈帧中第一调用者210a包括第一指令序列,第一被调用者220a包括第二指令序列,在执行第一指令序列的过程中可以调用第一指令序列。如图2b所示,SQL语句的栈帧中第二调用者210b包括第三指令序列,第二被调用者220b包括第四指令序列,第二真正调用者230b包括第五指令序列,在执行第五指令序列的过程中可以调用第四指令序列,进而在执行第四指令序列的过程中可以调用第三指令序列。动态执行的栈帧中第三调用者210c包括第六指令序列,第三被调用者220c包括第七指令序列,第三真正调用者230c包括第八指令序列,在执行第八指令序列的过程中可以调用第七指令序列,进而在执行第七指令序列的过程中可以调用第六指令序列。
步骤120、获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句。
具体地,在获取到数据库语句块的监控信息之后,无法确定数据库语句块中具体语句的执行时间,所以,可以再次获取数据库语句块所包含语句的指令偏移和语句类型。指令偏移和语句类型可以对数据库语句块所包含的语句再次定位,进一步确定虚拟机运行中执行时间最长的目标语句。
其中,指令偏移可以包括同一栈帧中的不同数据库语句块的执行顺序、同一栈帧中的过程/函数调用或者同一栈帧中的动态执行的顺序。语句类型可以包括METHOD、SQL语句和DYNAMIC SQL语句。
若所述数据库语句块的语句的计划是动态执行,确定所述语句类型是动态执行。
若所述数据库语句块的语句的计划是函数、过程调用,确定所述语句类型是函数过程调用。
若所述数据库语句块的语句的计划是SQL语句,确定所述语句类型是SQL语句类型。
步骤130、根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
具体地,在获取到监控信息、指令偏移和语句类型之后,可以将上述信息分别显示在预设显示画面中,基于显示画面信息,对语句的执行时间进行比较,找出执行时间最长的语句。
本实施例的技术方案,在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。在目标虚拟机运行时,通过本方法获取到的监控信息、指令偏移和语句类型,在减少运算量的前提下,可以提高定位目标虚拟机运行中执行时间最长目标语句的效率,实现了快速目标定位语句。
实施例二
图3为本发明实施例二提供的一种数据库监控方法的流程图,本实施例是在上述实施例的基础上进行具体化。在本实施例中,该方法还可以包括:
步骤310、在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息。
可以知道的是,所述数据库语句块可以包括过程/函数调用、SQL语句和动态执行,所述监控信息可以包括所述数据库语句块的执行号、调用者信息、当前方法名和执行时间。
一种实施方式中,若所述数据库语句块包括过程/函数调用,步骤310可以包括:
将第一目标虚拟机所对应的执行号,确定为第一执行号。
将第一目标虚拟机所对应第一当前栈帧的当前方法名,确定为第一当前方法名。
可以知道的是,过程/函数调用的执行顺序是上一栈帧(调用者)未结束,先产生新栈帧(被调用者),待新栈帧结束后再结束上一栈帧。第一层栈帧为总方法METHOD,第一层总方法METHOD的执行层次为0,调用关系每增加一层,METHOD执行层次加1。若数据库语句块循环调用预设过程/函数,过程/函数的栈帧地址是重复的,可以重用,调用不同的方法的过程/函数可以在栈帧链表后面追加一个栈帧。
具体地,执行过程/函数调用指令的过程中,可以把过程/函数调用的参数压到虚拟机的指令流中,然后创建栈帧,把方法名等执行信息记录在栈帧上,在创建栈帧的时候把栈帧加到虚拟机的栈帧链表上,登记过程/函数调用执行前的创建时间到栈帧中。具体而言可以得知,当数据库语句块包括过程/函数调用时,第一目标虚拟机所对应第一当前栈帧的执行号为第一执行号,第一当前栈帧的方法名为第一当前方法名。
将所述第一当前栈帧对应的第一上一栈帧,确定为第一调用者信息。
具体地,过程/函数调用中,调用者为第一当前栈帧的上一栈帧,即可以将第一上一栈帧确定为第一调用者信息。
另外,当过程/函数被嵌套非递归调用时,第一当前方法名和第一调用者信息随着调用顺序的改变而改变;当过程/函数被嵌套递归调用时,指令偏移、语句类型、第一当前方法名和第一调用者与过程/函数调用一致。
当过程/函数被嵌套递归调用时,层次监控可以体现栈帧的层次,函数/过程调用的层次可以为栈帧链表的当前长度。另外,SQL语句的第二当前栈帧上包括层次信息,动态执行的层次与外层函数/过程调用的层次不同。
基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间。
具体地,在虚拟机执行过程中,创建栈帧时,登记开始时间,在执行结束清除栈帧的时候登记结束时间,结束时间减去开始时间就是过程/函数调用的执行时间。
若所述数据库语句块包括SQL语句,步骤310包括:
将第二目标虚拟机所对应的执行号,确定为第二执行号。
将第二目标虚拟机所对应第二上一栈帧的当前方法名,确定为第二当前方法名。
语句的执行可以通过语句执行树完成。语句执行树可以在语句执行开始时创建,语句执行结束时释放。语句执行树的环境是在虚拟机指令中生成的一个环境,可以是含有多个语句计划节点的计划树。
SQL语句执行过程中不会产生新的栈帧,已经被包含在上一栈帧中。第二调用者信息和第二当前方法名和上一栈帧相同。例如,A中包含SQL语句。若A的方法名为METHOD_A,那么SQL语句的第二调用者信息和第二当前方法名都为METHOD_A,与METHOD的调用者和方法名一致,只是类型不同。
将所述第二上一栈帧,确定为第二调用者信息。
具体如上述确定调用者信息的方式,在此不再赘述。
基于释放和创建所述SQL语句对应SQL语句执行树的时间差值,确定第二执行时间。
在SQL语句执行树开始创建时,可以记录创建时间。在SQL语句执行树释放时,可以记录释放时间,然后释放时间减去创建时间可以得到SQL语句的执行时间。
若所述数据库语句块包括动态执行,步骤310包括:
将第三目标虚拟机所对应的执行号,确定为第三执行号。
将第三目标虚拟机所对应第三上一栈帧的调用者方法名,确定为第三当前方法名。
动态执行可以登记两次,一次是动态执行,一次是动态执行包含的PL/SQL语句、SQL语句或者函数/过程。
具体地,因为动态执行自身没有方法名,可以取上一栈帧的方法名作为第三当前方法名。第三调用者、第三被调用者和第三当前方法名都和上一栈帧一致,以便查找重复登记的项。
当动态执行重复执行时,重复执行的监控信息可以保持一致。
将所述第三上一栈帧,确定为第三调用者信息。
例如,E中包含动态SQL语句。假设E的方法名为METHOD_E,那么E和动态执行的调用者信息均为METHOD_E。
基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间。
动态执行会产生新栈帧,在新栈帧里面生成SQL语句执行树部分。动态执行从nexe_exec指令开始,创建新栈帧,此时记录动态执行的产生时间,在删除新生成的栈帧时,记录动态执行的删除时间,删除时间减去产生时间就是动态执行的执行时间。
一种实施方式中,当所述过程/函数调用包括至少一个语句时,
步骤基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间,包括:
根据创建所述第一当前栈帧的结束和开始时间差值,确定第一当前执行时间;
根据相同的所述监控信息、所述指令偏移和层次信息,确定过程/函数调用执行次数;
根据所述第一当前执行时间和所述过程/函数调用执行次数,确定所述第一执行时间。
当所述动态执行包括至少一个语句时,步骤基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间,包括:
根据所述动态执行中删除所述第三当前栈帧的时间信息和产生所述第三当前栈帧的时间信息的差值,确定第三当前执行时间;
根据所述监控信息中除时间之外的监控项,确定动态执行的执行次数;
根据所述第三当前执行时间和所述动态执行的执行次数,确定所述第三执行时间。
具体地,若虚拟机非嵌套的循环地、重复地执行同一过程/函数调用、同一SQL语句或者同一动态执行,则根据上述确定的第一执行时间、第二执行时间或者第三实行时间和执行次数,进一步确定执行时间。
步骤320、获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句。
根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移。
指令偏移可以包括同一栈帧中的不同监控对象的执行顺序、同一栈帧中的过程/函数调用或者同一栈帧中的动态执行的顺序。同类型的不同监控对象指多条语句都是SQL语句类型、过程/函数调用类型或者动态执行类型的。
一种实施方式中,若所述数据库语句块包括过程/函数调用,步骤根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移,包括:
将第一当前栈帧的结束指令地址到第一上一栈帧的起始指令地址,确定为所述过程/函数调用的指令偏移。
具体地,图4a为本发明实施例二提供的数据库监控方法中调用过程/函数中的指令偏移示例图,如图4a所示,在调用过程/函数时,第一调用者410a可以调用第一被调用者420a,目标虚拟机(vm)的ip为callfrm->ip_base,调用函数产生被调用函数的新栈帧后,执行新栈帧的指令。在调用结束后,vm->ip指向curfrm->ret_ip。所以过程/函数调用的指令偏移为curfrm->ret_ip-callfrm->ip_base。curfrm可以为第一当前栈帧,即调用者栈帧。callfrm可以为第一上一栈帧,即被调用者栈帧。另外,当过程/函数被多次调用时,指令偏移也随着调用顺序的改变而改变。
例如,当调用者和被调用者关系发生改变时,指令偏移的指向对象也发生改变。
一种实施方式中,若所述数据库语句块包括SQL语句,步骤根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移,包括:
将第二目标虚拟机的中断地址到第二当前栈帧的起始指令地址,确定为所述语句的指令偏移。
具体地,图4b为本发明实施例二提供的数据库监控方法中语句中的指令偏移示例图,如图4b所示,对于语句树的成员:从初始指令地址org_pl_cmd记下当前虚拟机的中断位置,即当前vm执行指令地址。虚拟机中断时,执行的指令为dop_sql。起始ip地址为curfrm->ip_base,执行树销毁时的偏移为nsql_vm->org_pl_cmd,因此语句的偏移可以为nsql_vm->org_pl_cmd-currfrm->ip_base,不同于过程/函数调用,没有产生第二当前栈帧,所以不需登记ret_ip。所以语句的指令偏移可以是虚拟机中断的位置-第二当前栈帧的起始位置。另外,数据库语句块中的语句是按语句NO排序的。
一种实施方式中,若所述数据库语句块包括动态执行,步骤根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移,包括:
将第三当前栈帧的结束指令地址到第三上一栈帧的起始指令地址,确定为所述动态执行的指令偏移。
具体地,图4c为本发明实施例二提供的数据库监控方法中动态执行中的指令偏移示例图,如图4c所示,动态执行中,第三调用者410c可以调用第三被调用者420c,动态执行的指令偏移可以与动态执行所在的过程/函数调用的指令偏移保持一致。
若数据库语句块包括至少一个过程/函数调用、SQL语句和动态执行时,语句类型可以包括METHID、SQL语句和DYNAMIC SQL语句中的至少一个。
若所述数据库语句块的语句的计划是动态执行,确定所述语句类型是动态执行。
若所述数据库语句块的语句的计划是函数、过程调用,确定所述语句类型是函数过程调用。
若所述数据库语句块的语句的计划是SQL语句,确定所述语句类型是SQL语句类型。
步骤330、根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
控制预设窗口对所述监控信息、所述指令偏移和所述语句类型进行展示。
具体地,可以在预设窗口中展示执行号、调用者信息、当前方法名、执行时间、指令偏移和语句类型。
根据预设窗口展示信息中所述数据库语句块中所述语句的执行时间,确定所述目标虚拟机运行中执行时间最长的目标语句。
具体地,查看预设窗口展示信息中的执行时间,可以确定目标虚拟机运行中执行时间最长的目标语句。
步骤340、所述目标虚拟机运行结束后,将所述监控信息、所述指令偏移和所述语句类型对应缓存至监控缓存表中。
具体地,目标虚拟机运行结束后,可以将其对应的数据库语句块的监控信息、指令偏移和语句类型缓存至监控缓存表中。
本实施例的技术方案,在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。所述目标虚拟机运行结束后,将所述监控信息、所述指令偏移和所述语句类型对应缓存至监控缓存表中。本发明提供的数据库监控方法,通过依次获取数据库语句块的监控信息、数据库语句块所包含语句的指令偏移和语句类型,确定具体语句的执行时间,并根据执行时间确定目标虚拟机中执行时间最长的目标语句,解决了现有技术需要在过程/函数调用、SQL语句或者动态执行前后的代码里添加print来打印时间信息,进而确定目标虚拟机中执行时间最长的目标语句,提升了确定目标虚拟机中执行时间最长的目标语句的效率。
实施例三
图5为本发明实施例三提供的一种数据库监控装置的结构图,该装置可以适用于在服务器,提高服务器确定目标虚拟机运行过程中执行时间最长的目标SQL语句的效率。该装置可以通过软件和/或硬件实现,并一般集成在服务器中。
如图5所示,该装置包括:
第一执行模块510,用于在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
第二执行模块520,用于获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
确定模块530,用于根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
本实施例提供的数据库监控装置,在目标虚拟机运行时,通过获取所述目标虚拟机所对应数据库语句块的监控信息;获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。在目标虚拟机运行时,通过本方法获取到的监控信息、指令偏移和语句类型,在减少运算量的前提下,可以提高定位目标虚拟机运行中执行时间最长目标语句的效率,实现了快速目标定位语句。
在上述实施例的基础上,若所述数据库语句块包括过程/函数调用,第一执行模块510,具体用于:
将第一目标虚拟机所对应的执行号,确定为第一执行号;
将第一目标虚拟机所对应第一当前栈帧的当前方法名,确定为第一当前方法名;
将所述第一当前栈帧对应的第一上一栈帧,确定为第一调用者信息;
基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间。
在上述实施例的基础上,若所述数据库语句块包括SQL语句,第一执行模块510,具体用于:
将第二目标虚拟机所对应的执行号,确定为第二执行号;
将第二目标虚拟机所对应第二上一栈帧的当前方法名,确定为第二当前方法名;
将所述第二上一栈帧,确定为第二调用者信息;
基于释放和创建所述SQL语句对应SQL语句执行树的时间差值,确定第二执行时间。
在上述实施例的基础上,若所述数据库语句块包括动态执行,第一执行模块510,具体用于:
将第三目标虚拟机所对应的执行号,确定为第三执行号;
将第三目标虚拟机所对应第三上一栈帧的调用者方法名,确定为第三当前方法名;
将所述第三上一栈帧,确定为第三调用者信息;
基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间。
一种实施方式中,当所述过程/函数调用包括至少一个语句时,
基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间,包括:
根据创建所述第一当前栈帧的结束和开始时间差值,确定第一当前执行时间;
根据相同的所述监控信息、所述指令偏移和层次信息,确定过程/函数调用执行次数;
根据所述第一当前执行时间和所述过程/函数调用执行次数,确定所述第一执行时间;
当所述动态执行包括至少一个语句时,
基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间,包括:
根据所述动态执行中删除所述第三当前栈帧的时间信息和产生所述第三当前栈帧的时间信息的差值,确定第三当前执行时间;
根据所述监控信息中除时间之外的监控项,确定动态执行的执行次数;
根据所述第三当前执行时间和所述动态执行的执行次数,确定所述第三执行时间。
在上述实施例的基础上,第二执行模块520,具体用于:
根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移;
根据所述数据库语句块的计划类型,确定所述语句类型。
一种实施方式中,若所述数据库语句块包括过程/函数调用,确定所述语句的指令偏移和语句类型,包括:
将第一当前栈帧的结束指令地址到第一上一栈帧的起始指令地址,确定为所述过程/函数调用的指令偏移;
若所述数据库语句块的语句的计划是函数、过程调用,确定所述语句类型为函数/过程调用。
一种实施方式中,若所述数据库语句块包括SQL语句,确定所述语句的指令偏移和语句类型,包括:
将第二目标虚拟机的中断地址到第二当前栈帧的起始指令地址,确定为所述SQL语句的指令偏移;
若所述数据库语句块的语句的计划是SQL语句,确定所述语句类型为SQL语句类型。
一种实施方式中,若所述数据库语句块包括动态执行,确定所述语句的指令偏移和语句类型,包括:
将第三当前栈帧的结束指令地址到第三上一栈帧的起始指令地址,确定为所述动态执行的指令偏移;
若所述数据库语句块的语句的计划是动态执行,确定所述语句类型为动态执行。
在上述实施例的基础上,确定模块530,具体用于:
控制预设窗口对所述监控信息、所述指令偏移和所述语句类型进行展示;
根据预设窗口展示信息中所述数据库语句块中所述语句的执行时间,确定所述目标虚拟机运行中执行时间最长的目标语句。
在上述实施例的基础上,该装置还可以包括:
缓存模块,用于在所述目标虚拟机运行结束后,将所述监控信息、所述指令偏移和所述语句类型对应缓存至监控缓存表中。
本发明实施例所提供的数据库监控装置可执行本发明任意实施例所提供的数据库监控方法,具备执行方法相应的功能模块和有益效果。
实施例四
图6为本发明实施例四提供的一种服务器的结构示意图,如图6所示,该服务器包括处理器610和存储器620;服务器中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;服务器中的处理器610和存储器620可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库监控方法对应的模块(例如,数据库监控装置中的第一执行模块510、第二执行模块520和确定模块530。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的数据库监控方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例提供的服务器可以执行上述实施例提供的数据库方法,具备相应的功能和有益效果。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据库监控方法,该方法包括:
在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库监控方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库监控方法,其特征在于,包括:
在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
2.根据权利要求1所述的数据库监控方法,其特征在于,所述数据库语句块包括过程/函数调用、SQL语句和动态执行,所述监控信息包括所述数据库语句块的执行号、调用者信息、当前方法名和执行时间,
若所述数据库语句块包括过程/函数调用,当目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息,包括:
将第一目标虚拟机所对应的执行号,确定为第一执行号;
将第一目标虚拟机所对应第一当前栈帧的当前方法名,确定为第一当前方法名;
将所述第一当前栈帧对应的第一上一栈帧,确定为第一调用者信息;
基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间;
若所述数据库语句块包括SQL语句,当目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息,包括:
将第二目标虚拟机所对应的执行号,确定为第二执行号;
将第二目标虚拟机所对应第二上一栈帧的当前方法名,确定为第二当前方法名;
将所述第二上一栈帧,确定为第二调用者信息;
基于释放和创建所述SQL语句对应SQL语句执行树的时间差值,确定第二执行时间;
若所述数据库语句块包括动态执行,当目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息,包括:
将第三目标虚拟机所对应的执行号,确定为第三执行号;
将第三目标虚拟机所对应第三上一栈帧的调用者方法名,确定为第三当前方法名;
将所述第三上一栈帧,确定为第三调用者信息;
基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间。
3.根据权利要求2所述的数据库监控方法,其特征在于,
当所述过程/函数调用包括至少一个语句时,
基于创建所述第一当前栈帧的结束和开始时间差值,确定第一执行时间,包括:
根据创建所述第一当前栈帧的结束和开始时间差值,确定第一当前执行时间;
根据相同的所述监控信息、所述指令偏移和层次信息,确定过程/函数调用执行次数;
根据所述第一当前执行时间和所述过程/函数调用执行次数,确定所述第一执行时间;
当所述动态执行包括至少一个语句时,
基于所述动态执行中删除和产生所述第三当前栈帧的时间差值,确定第三执行时间,包括:
根据所述动态执行中删除所述第三当前栈帧的时间信息和产生所述第三当前栈帧的时间信息的差值,确定第三当前执行时间;
根据所述监控信息中除时间之外的监控项,确定动态执行的执行次数;
根据所述第三当前执行时间和所述动态执行的执行次数,确定所述第三执行时间。
4.根据权利要求1所述的数据库监控方法,其特征在于,获取所述数据库语句块所包含语句的指令偏移和语句类型,包括:
根据所述数据库语句块所包含所述语句的执行顺序,确定所述语句的指令偏移;
根据所述数据库语句块的计划类型,确定所述语句类型。
5.根据权利要求4所述的数据库监控方法,其特征在于,
若所述数据库语句块包括过程/函数调用,确定所述语句的指令偏移和语句类型,包括:
将第一当前栈帧的结束指令地址到第一上一栈帧的起始指令地址,确定为所述过程/函数调用的指令偏移;
若所述数据库语句块的语句的计划是函数、过程调用,确定所述语句类型为函数/过程调用;
若所述数据库语句块包括SQL语句,确定所述语句的指令偏移和语句类型,包括:
将第二目标虚拟机的中断地址到第二当前栈帧的起始指令地址,确定为所述SQL语句的指令偏移;
若所述数据库语句块的语句的计划是SQL语句,确定所述语句类型为SQL语句类型;
若所述数据库语句块包括动态执行,确定所述语句的指令偏移和语句类型,包括:
将第三当前栈帧的结束指令地址到第三上一栈帧的起始指令地址,确定为所述动态执行的指令偏移;
若所述数据库语句块的语句的计划是动态执行,确定所述语句类型为动态执行。
6.根据权利要求1所述的数据库监控方法,其特征在于,根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句,包括:
控制预设窗口对所述监控信息、所述指令偏移和所述语句类型进行展示;
根据预设窗口展示信息中所述数据库语句块中所述语句的执行时间,确定所述目标虚拟机运行中执行时间最长的目标语句。
7.根据权利要求1所述的数据库监控方法,其特征在于,在根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句之后,还包括:
所述目标虚拟机运行结束后,将所述监控信息、所述指令偏移和所述语句类型对应缓存至监控缓存表中。
8.一种数据库监控装置,其特征在于,包括:
第一执行模块,用于在目标虚拟机运行时,获取所述目标虚拟机所对应数据库语句块的监控信息;
第二执行模块,用于获取所述数据库语句块所包含语句的指令偏移和语句类型,其中,所述数据库语句块包括至少一个语句;
确定模块,用于根据所述监控信息、所述指令偏移和所述语句类型,确定所述目标虚拟机运行中执行时间最长的目标语句。
9.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据库监控方法。
10.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的数据库监控方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011445234.9A CN112540897B (zh) | 2020-12-08 | 2020-12-08 | 一种数据库监控方法、装置、服务器及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011445234.9A CN112540897B (zh) | 2020-12-08 | 2020-12-08 | 一种数据库监控方法、装置、服务器及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540897A true CN112540897A (zh) | 2021-03-23 |
CN112540897B CN112540897B (zh) | 2023-08-25 |
Family
ID=75018312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011445234.9A Active CN112540897B (zh) | 2020-12-08 | 2020-12-08 | 一种数据库监控方法、装置、服务器及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540897B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106157129A (zh) * | 2015-04-17 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种实现分布式***跨时域一致性方法及装置 |
US20180218032A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing conditional statement execution within a multi-tenant aware structured query language |
CN108664359A (zh) * | 2018-05-23 | 2018-10-16 | 上海达梦数据库有限公司 | 一种数据库恢复方法、装置、设备及存储介质 |
CN110297814A (zh) * | 2019-05-22 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 数据库操作的性能监控方法、装置、设备及存储介质 |
CN110866031A (zh) * | 2019-11-08 | 2020-03-06 | 中国工商银行股份有限公司 | 数据库访问路径的优化方法、装置、计算设备以及介质 |
-
2020
- 2020-12-08 CN CN202011445234.9A patent/CN112540897B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106157129A (zh) * | 2015-04-17 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种实现分布式***跨时域一致性方法及装置 |
US20180218032A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing conditional statement execution within a multi-tenant aware structured query language |
CN108664359A (zh) * | 2018-05-23 | 2018-10-16 | 上海达梦数据库有限公司 | 一种数据库恢复方法、装置、设备及存储介质 |
CN110297814A (zh) * | 2019-05-22 | 2019-10-01 | 中国平安人寿保险股份有限公司 | 数据库操作的性能监控方法、装置、设备及存储介质 |
CN110866031A (zh) * | 2019-11-08 | 2020-03-06 | 中国工商银行股份有限公司 | 数据库访问路径的优化方法、装置、计算设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112540897B (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2477355A1 (en) | Method and device for managing association of network resources | |
JP4214712B2 (ja) | データベースのページ確保処理方法 | |
CN106033439A (zh) | 一种分布式事务处理方法及*** | |
CN111414362B (zh) | 数据读取方法、装置、设备及存储介质 | |
CN110750315B (zh) | Android***中的类加载方法、装置、设备和存储介质 | |
US20160321036A1 (en) | Dynamically monitoring code execution activity to identify and manage inactive code | |
CN111984892A (zh) | 页面访问方法、装置、设备及存储介质 | |
CN111553652B (zh) | 业务处理方法及装置 | |
CN108415934B (zh) | 一种Hive表修复方法、装置、设备及计算机可读存储介质 | |
CN115269631A (zh) | 数据查询方法、数据查询***、设备及存储介质 | |
CN113065084B (zh) | 数据加载方法、装置、计算机设备和存储介质 | |
CN111046106A (zh) | 缓存数据同步方法、装置、设备及介质 | |
CN112328602B (zh) | 一种数据写入Kafka的方法、装置及设备 | |
CA2510644A1 (en) | Quality of service feedback for technology-neutral data reporting | |
CN112540897B (zh) | 一种数据库监控方法、装置、服务器及介质 | |
CN113254470A (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN110633300A (zh) | 一种嵌套查询的断点续运行的方法及装置 | |
CN113495723B (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN115905244A (zh) | 一种基于内存批量处理数据的方法 | |
CN115098503A (zh) | 空值数据处理方法、装置、计算机设备以及存储介质 | |
CN109582595B (zh) | 内存管理方法、装置、服务器及存储介质 | |
CN112749189A (zh) | 数据查询方法及装置 | |
CN118035042B (zh) | 应用程序性能分析方法、装置、电子设备及存储介质 | |
CN113114493B (zh) | 一种网元配置约束检查方法及*** | |
CN115185921B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |