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

数据库性能瓶颈定位分析方法、装置、系统及存储介质与流程

2022-02-19 01:21:00 来源:中国专利 TAG:


1.本发明涉及数据库技术领域,尤其涉及一种数据库性能瓶颈定位分析方法、装置、系统及存储介质。


背景技术:

2.oracle数据库是目前使用最为广泛的数据库管理系统,作为一个通用的数据库系统,为应对核心数据和系统的超流量访问,oracle数据库自身提供复杂多样的监控指标及工具,如enterprise manager、awr报告、sqltrace等,给oracle数据库dba专家带来便利的同时,却因为仅仅是各类监控指标展示,缺乏逻辑性的分析,更没有提供定位诊断类报告,过于依赖数据库人员的经验,给普通oracle数据库使用者带来巨大困扰。对这些使用者来说,如何快速定位oracle数据库的性能问题存在过高的使用和学习成本。
3.因此,现有oracle数据库性能诊断的技术一般介绍某一种监控工具,或某一类监控指标,缺乏全局的、可操作性的、适合大多数人使用的、能够快速定位性能问题的性能诊断技术。


技术实现要素:

4.本发明的主要目的在于提供一种数据库性能瓶颈定位分析方法、装置、系统及存储介质,旨在快速精准定位数据库的性能问题,提升数据库问题分析解决的效率,并简化操作过程和减少成本。
5.为实现上述目的,本发明提供一种数据库性能瓶颈定位分析方法,所述方法包括以下步骤:
6.在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;
7.根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。
8.可选地,根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析的步骤包括:
9.将所述服务器层资源消耗指标,与所述数据库的基准测试资源消耗指标进行比对,判断所述服务器层资源消耗指标是否超出对应指标预设的正常压力下服务器资源消耗阈值范围;
10.若所述服务器层资源消耗指标超出预设的正常压力下服务器资源消耗阈值范围,则确定所述服务器层资源消耗指标异常;
11.将异常的服务器层资源消耗指标,匹配预设的表象

根因对应关系,定位可能的性能瓶颈组件。
12.可选地,所述方法还包括:
13.在压测过程中,对所述数据库的全链路业务流程层进行监控,获得所述数据库的等待事件;
14.确定所述数据库的等待事件类型;
15.根据所述数据库的等待事件类型,结合所述服务器层的资源消耗指标,确定性能瓶颈点的方向。
16.可选地,所述方法还包括:
17.监控所述数据库的组件层,确定所述性能瓶颈点;
18.分析所述性能瓶颈点,定位产生性能问题的根因,生成诊断报告。
19.可选地,所述监控所述数据库的组件层,确定所述性能瓶颈点的步骤包括:
20.基于业务交易压力传导路径,从应用端开始,监控所述数据库的组件层,确定所述数据库执行进程情况,所述组件层的组件包括:所述数据库的应用连接、sql分析执行、事务、锁、存储、日志和参数中的一种或多种;
21.根据所述数据库执行进程情况,确定所述性能瓶颈点。
22.可选地,所述监控所述数据库的组件层,确定所述数据库执行进程情况的步骤包括:
23.监控所述数据库的应用连接,查看所述数据库的应用连接情况,以根据所述数据库的应用连接情况确认造成性能瓶颈的根源是在应用端、应用与数据库之间的连接,或者数据库端,所述数据库的应用连接情况至少包括:所述数据库连接数的变化曲线;
24.监控所述数据库的sql分析执行流程,获得所述数据库的sql的解析和执行情况,以根据所述数据库的sql的解析和执行情况,确定所述性能瓶颈点;
25.监控所述数据库的事务组件,查询是否出现影响数据库响应时间的预设的长/大事务数据处理操作,以根据长/大事务数据处理操作情况确定所述性能瓶颈点。
26.可选地,所述在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标的步骤之前还包括:
27.在软件系统架构设计阶段,定义所述数据库的架构规范和sql语句规则;
28.基于所述数据库的架构规范和sql语句规则,对数据库性能参数进行检测和sql扫描,对比预设的所述数据库的基准测试性能黄金指标值和对应的参数建议值范围,确定存在问题的数据库参数值。
29.本发明还提出一种数据库性能瓶颈定位分析装置,所述装置包括:
30.监控模块,用于在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;
31.定位分析模块,用于根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。
32.本发明还提出一种数据库性能瓶颈定位分析系统,所述系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序程序,所述计算机程序被所述处理器执行时实现如上所述的数据库性能瓶颈定位分析方法的步骤。
33.本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算
机程序,所述计算机程序被处理器执行时实现如上所述的数据库性能瓶颈定位分析方法的步骤。
34.本发明实施例提出的数据库性能瓶颈定位分析方法、装置、系统及存储介质,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。此外,进一步还可以从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
附图说明
35.图1为本发明实施例数据库性能瓶颈定位分析装置所属终端设备的功能模块示意图;
36.图2为本发明数据库性能瓶颈定位分析方法一实施例的流程示意图;
37.图3为本发明实施例开发测试阶段的oracle数据库性能瓶颈定位分析流程示意图;
38.图4为本发明实施例提供的一种常见oracle性能问题与服务器层表象映射关系图;
39.图5为本发明数据库性能瓶颈定位分析方法另一实施例的流程示意图;
40.图6为本发明实施例提供的常见的oracle等待事件类型图;
41.图7为本发明数据库性能瓶颈定位分析方法再一实施例的流程示意图;
42.图8为本发明数据库性能瓶颈定位分析方法再一实施例的流程示意图;
43.图9为本发明实施例提供的一种oracle数据库sql语句执行示意图;
44.图10为本发明实施例提供的一种oracle数据库组件层分析思路图。
45.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
46.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
47.本发明实施例的主要解决方案是:在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层
的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。此外,进一步还可以从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
48.本发明实施例涉及的技术术语:
49.oracle,oracle数据库系统是美国oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(client/server)或b/s体系结构的数据库之一,也是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
50.本发明实施例考虑到:现有oracle数据库性能诊断的技术一般介绍某一种监控工具,或某一类监控指标,仅是各类监控指标展示,缺乏逻辑性的分析,更没有提供定位诊断类报告,过于依赖数据库人员的经验,给普通oracle数据库使用者带来巨大困扰,缺乏全局的、可操作性的、适合大多数人使用的、能够快速定位性能问题的性能诊断技术。
51.基于此,本发明实施例提供一种解决方案,能够快速精准定位数据库的性能问题,提升数据库问题分析解决的效率,并简化操作过程和减少成本。
52.具体地,参照图1,图1为本发明数据库性能瓶颈定位分析装置所属终端设备的功能模块示意图。该数据库性能瓶颈定位分析装置可以为独立于终端设备的装置,其可以通过硬件或软件的形式承载于终端设备或系统上。该终端设备可以为手机、平板电脑等智能移动终端,还可以为服务器等网络设备。
53.在本实施例中,该数据库性能瓶颈定位分析装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
54.存储器130中存储有操作系统以及数据库性能瓶颈定位分析程序;输出模块110可为显示屏、扬声器等。通信模块140可以包括wifi模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
55.其中,作为一种实施例方式,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时实现以下步骤:
56.在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;
57.根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。
58.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
59.将所述服务器层资源消耗指标,与所述数据库的基准测试资源消耗指标进行比对,判断所述服务器层资源消耗指标是否超出对应指标预设的正常压力下服务器资源消耗阈值范围;
60.若所述服务器层资源消耗指标超出预设的正常压力下服务器资源消耗阈值范围,则确定所述服务器层资源消耗指标异常;
61.将异常的服务器层资源消耗指标,匹配预设的表象

根因对应关系,定位可能的性能瓶颈组件。
62.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
63.确定所述数据库的等待事件类型;
64.根据所述数据库的等待事件类型,结合所述服务器层的资源消耗指标,确定性能瓶颈点的方向。
65.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
66.监控所述数据库的组件层,确定所述性能瓶颈点;
67.分析所述性能瓶颈点,定位产生性能问题的根因,生成诊断报告。
68.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
69.基于业务交易压力传导路径,从应用端开始,监控所述数据库的组件层,确定所述数据库执行进程情况,所述组件层的组件包括:所述数据库的应用连接、sql分析执行、事务、锁、存储、日志和参数中的一种或多种;
70.根据所述数据库执行进程情况,确定所述性能瓶颈点。
71.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
72.监控所述数据库的应用连接,查看所述数据库的应用连接情况,以根据所述数据库的应用连接情况确认造成性能瓶颈的根源是在应用端、应用与数据库之间的连接,或者数据库端,所述数据库的应用连接情况至少包括:所述数据库连接数的变化曲线;
73.监控所述数据库的sql分析执行流程,获得所述数据库的sql的解析和执行情况,以根据所述数据库的sql的解析和执行情况,确定所述性能瓶颈点;
74.监控所述数据库的事务组件,查询是否出现影响数据库响应时间的预设的长/大事务数据处理操作,以根据长/大事务数据处理操作情况确定所述性能瓶颈点。
75.进一步地,存储器130中的数据库性能瓶颈定位分析程序被处理器执行时还实现以下步骤:
76.在软件系统架构设计阶段,定义所述数据库的架构规范和sql语句规则;
77.基于所述数据库的架构规范和sql语句规则,对数据库性能参数进行检测和sql扫描,对比预设的所述数据库的基准测试性能黄金指标值和对应的参数建议值范围,确定存在问题的数据库参数值。
78.本实施例通过上述方案,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。此外,进一步还可以从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
79.基于上述终端设备架构但不限于上述架构,提出本发明方法实施例。
80.具体地,在本发明实施例中,从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,提供一种由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位的方法和监控诊断报告系统,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率。
81.参照图2,图2为本发明数据库性能瓶颈定位分析方法第一实施例的流程示意图。
82.如图2所示,本发明一实施例提出的一种数据库性能瓶颈定位分析方法,所述方法包括以下步骤:
83.步骤s101,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;
84.本发明实施例方法的执行主体可以是一种数据库性能瓶颈定位分析装置,也可以是服务器或其他网络设备,本实施例对此不作具体限定。
85.本发明实施例涉及数据库性能瓶颈定位分析,其中,数据库可以具体是oracle数据库等,本实施例以oracle数据库举例说明。
86.本发明实施例主要分成两个阶段对oracle数据库性能瓶颈进行定位分析,根据软件系统的研发周期,分别在软件系统架构设计阶段和开发测试阶段,对oracle数据库进行静态扫描和动态监控诊断。
87.在本实施例方案中,主要是针对开发测试阶段,对数据库性能瓶颈逐层进行定位分析。
88.在开发和测试阶段,本发明分别以不同的实施例,分别从服务器资源监控、等待事件分析、oracle组件监控三方面逐层深入,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告。
89.如图3所示,本发明各实施例,从服务器层入手,逐层深入到oracle数据库等待事件层、组件及参数层,来一步步的定位性能瓶颈。
90.首先,本实施例从服务器资源监控方面对oracle数据库性能瓶颈进行定位分析。
91.具体地,在软件开发测试阶段的压测过程中,首先,监控数据库所在的服务器层的资源消耗指标,定位对应的流程或组件。
92.其中,服务器层指应用服务器层,应用服务器层监控的指标主要包括:cpu、内存、磁盘、负载曲线等,通过指标阈值设定,超过阈值范围则认定为资源指标存在异常。
93.步骤s102,根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。
94.具体地,将所述服务器层资源消耗指标,与所述数据库的基准测试资源消耗指标进行比对,判断所述服务器层资源消耗指标是否超出对应指标预设的正常压力下服务器资源消耗阈值范围。
95.若所述服务器层资源消耗指标超出预设的正常压力下服务器资源消耗阈值范围,则确定所述服务器层资源消耗指标异常;将异常的服务器层资源消耗指标,匹配预设的表象

根因对应关系,定位可能的性能瓶颈组件。
96.更为具体地,具体实现如下:
97.监控服务器层资源消耗指标,定位对应的流程或组件。应用服务器层监控的指标主要包括:cpu、内存、磁盘、负载曲线等,如图4所示,通过指标阈值设定,超过阈值范围认定为资源指标存在异常,根据[表象,根因]对,定位可能的性能瓶颈组件。其中,高并发低负载场景特指在高并发压力情况下,并发用户逐渐增加,服务器的资源消耗均保持低位,但黄金指标曲线中的平均响应时间超过阈值范围。
[0098]
本实施例通过分析服务器的资源消耗,对比oracle数据库基准测试指标,分析服务器层可能的性能瓶颈根因,逐步排查oracle数据库所在服务器硬件资源是否存在性能瓶颈。
[0099]
更为具体地,结合图4所示,针对oracle数据库所在服务器资源出现异常情况,均可对应到底层某个组件或环节出现问题,常见的对应关系可划分成的[表象,根因]对有如下几种:
[0100]
cpu异常[cpu异常,sql问题][cpu异常,存储问题];io异常[io异常,sql问题][io异常,存储问题][io异常,日志问题];内存异常[内存异常,缓存问题][内存异常,参数问题];高并发低负载[高并发低负载,sql问题][高并发低负载,锁问题]。
[0101]
在实施压测过程中,监控oracle数据库所在服务器资源消耗指标,结合基准测试资源消耗情况和正常压力下服务器资源消耗阈值区间,一方面,可判定oracle数据库所在服务器的硬件资源是否存在性能瓶颈;另一方面,在服务器资源不存在性能瓶颈的情况下,根据[表象,根因]对的匹配,可初步诊断出具体性能问题所在组件或模块,为下一个步骤等待事件或oracle组件的监控指明分析方向。
[0102]
本实施例通过上述方案,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围
进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。
[0103]
如图5所示,本发明另一实施例提出的一种数据库性能瓶颈定位分析方法,基于上述图2所示的实施例,所述方法还包括:
[0104]
步骤s103,在压测过程中,对所述数据库的全链路业务流程层进行监控,获得所述数据库的等待事件;
[0105]
步骤s104,确定所述数据库的等待事件类型;
[0106]
步骤s105,根据所述数据库的等待事件类型,结合所述服务器层的资源消耗指标,确定性能瓶颈点的方向。
[0107]
相比上述图2所示的实施例,本实施例进一步还包括从oracle数据库等待事件层分析,来对oracle数据库性能瓶颈进行定位分析的方案。
[0108]
具体地,在压测过程中,进行数据库全链路业务流程层监控,监控数据库的等待事件类型,分析等待事件类型占比来确定具体数据库的哪个模块出现了性能瓶颈问题。
[0109]
其中,每一个等待事件,在进程级别指明数据库的一种活动状态。在oracle数据库系统内置等待事件视图,通过这些视图可以了解整体(系统级)、局部(会话级)的等待事件发生情况及各类别事件的分类统计。如图6所示,oracle数据库常见的等待事件类型和常见的等待事件,可初步定位造成等待事件原因的分类所在,为下一步细化根因指明方向。
[0110]
更为具体地,在压测过程中,通过监控等待事件,监控指标包括:等待类型,总等待次数,总等待时间,平均等待时间,总等待事件占db time,前台总等待次数,前台总等待时间,前台平均等待时间,前台等待时间占比,前台等待占比,前台总等待事件占db time,对照等待事件和等待事件类型分类,可以确定oracle数据库主要的压力点和db time耗时所在,再结合上述实施例中数据库服务器资源消耗情况,能进一步确定性能瓶颈点的方向,具体是哪个系统模块出了问题,如由数据库自身系统调度造成,或者用户i/o操作造成。
[0111]
本实施例通过上述方案,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。进一步还可以在压测过程中,对所述数据库的全链路业务流程层进行监控,获得所述数据库的等待事件;确定所述数据库的等待事件类型;根据所述数据库的等待事件类型,结合所述服务器层的资源消耗指标,确定性能瓶颈点的方向,极大的提升数据库问题分析解决的效率。
[0112]
如图7所示,本发明再一实施例提出的一种数据库性能瓶颈定位分析方法,基于上述图5所示的实施例,所述方法还包括:
[0113]
步骤s106,监控所述数据库的组件层,确定所述性能瓶颈点;
[0114]
步骤s107,分析所述性能瓶颈点,定位产生性能问题的根因,生成诊断报告。
[0115]
相比上述图5所示的实施例,本实施例进一步还包括从oracle数据库组件层分析,来对oracle数据库性能瓶颈进行定位分析的方案。
[0116]
具体地,监控所述数据库的组件层,确定所述性能瓶颈点,具体实现方案如下:
[0117]
基于业务交易压力传导路径,从应用端开始,监控所述数据库的组件层,确定所述数据库执行进程情况,以便根据所述数据库执行进程情况,确定所述性能瓶颈点。
[0118]
其中,所述组件层的组件包括:所述数据库的应用连接、sql分析执行、事务、锁、存储、日志和参数中的一种或多种。
[0119]
在监控所述数据库的组件层,确定所述数据库执行进程情况时,可以采用如下方案:
[0120]
作为一种场景,可以监控所述数据库的应用连接,查看所述数据库的应用连接情况,以根据所述数据库的应用连接情况确认造成性能瓶颈的根源是在应用端、应用与数据库之间的连接,或者数据库端,所述数据库的应用连接情况至少包括:所述数据库连接数的变化曲线。
[0121]
作为另一种场景,可以监控所述数据库的sql分析执行流程,获得所述数据库的sql的解析和执行情况,以根据所述数据库的sql的解析和执行情况,确定所述性能瓶颈点。
[0122]
作为再一种场景,可以监控所述数据库的事务组件,查询是否出现影响数据库响应时间的预设的长/大事务数据处理操作,以根据长/大事务数据处理操作情况确定所述性能瓶颈点。
[0123]
本实施例通过上述方案,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。进一步可以从开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
[0124]
如图8所示,本发明再一实施例提出的一种数据库性能瓶颈定位分析方法,基于上述图7所示的实施例,在上述步骤s101,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标之前,所述方法还包括:
[0125]
步骤s1001,在软件系统架构设计阶段,定义所述数据库的架构规范和sql语句规则;
[0126]
步骤s1002,基于所述数据库的架构规范和sql语句规则,对数据库性能参数进行检测和sql扫描,对比预设的所述数据库的基准测试性能黄金指标值和对应的参数建议值范围,确定存在问题的数据库参数值。
[0127]
相比上述图7所示的实施例,本实施例还包括在软件系统架构设计阶段对数据库性能瓶颈进行定位分析的方案。
[0128]
具体地,在软件架构设计阶段,定义数据库架构规范和sql语句规则,通过静态参数检测和sql扫描,解决库、表空间、表、索引等在设计过程中可能引起性能问题的错误。
[0129]
其中,常见的oracle数据库性能参数包括:sga_target,shared_pool_size,db_catch_size,pga_aggregate_size,pga_aggregate_target,sessions,job_queue_processes,shares等,根据软件系统性能要求,对比oracle数据库基准测试性能黄金指标值和对应的参数建议值范围,确定存在问题的oracle数据库参数值。
[0130]
sql语句规范包括:库表连接数量限制,sql语句长度,sql对数据库资源消耗,索引配置,sql语句判断条件,删除/插入/修改操作等等。
[0131]
本实施例通过上述方案,在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。本发明方案在软件开发测试阶段,通过自动监控数据库所在的服务器层的资源消耗指标,将服务器层资源消耗指标与服务器资源消耗阈值范围进行比对,获得性能瓶颈评估分析结果,便于普通使用者快速精准的定位数据库性能瓶颈的节点,极大的提升数据库问题分析解决的效率,而且简化操作过程和减少成本。此外,进一步还可以从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
[0132]
下面以oracle数据库为例,针对软件架构设计阶段和开发测试阶段,对oracle数据库性能瓶颈进行定位分析的具体处理方案进行详细阐述。
[0133]
本发明实施例提供的oracle性能瓶颈定位方法,主要针对于oracle数据库系统,对oracle数据库系统的纷繁杂乱的监控和性能指标进行分析和梳理,设计出一套适合普通开发测试人员易于操作理解的oracle数据库性能瓶颈定位方法。
[0134]
如前所述,本发明实施例方案,主要分成两个阶段对oracle数据库性能瓶颈进行定位分析,根据软件系统的研发周期,分别在软件系统架构设计阶段和开发测试阶段,对oracle数据库进行静态扫描和动态监控诊断。
[0135]
也就是说,本发明实施例提供的oracle性能瓶颈定位方法主要包括两个阶段的定位操作:在软件设计阶段对oracle数据库系统的静态扫描;在软件开发阶段对oracle数据库系统逐层进行监控和定位分析。
[0136]
其中,在软件架构设计阶段的静态扫描包括两个步骤:
[0137]
步骤1:oracle数据库基准测试和基准参数校验,一方面获取oracle数据库官方提供的性能黄金指标基准值;另一方面,测试在当前特定cpu、内存、磁盘等硬件配置下oracle数据库系统基础读写的性能指标,从而为软件开发过程中性能黄金指标值提供基准。基准测试还包括对比不同参数对比情况下,性能基准值的变化,主要的参数配置值,即常见的oracle数据库性能参数有:sga_target,shared_pool_size,db_catch_size,pga_
aggregate_size,pga_aggregate_target,sessions,job_queue_processes,shares等。其取值范围设定为如下表所示:
[0138][0139]
步骤2:在一般联机交易系统中,应用主要通过sql语句与数据库进行交互,因此sql语句的规范性对oracle数据库的性能影响巨大。通过拟定sql语句的规范要求,在设计阶段,对sql语句进行静态扫描,可提前发现sql语句的规范性问题,从而提升oracle数据库的性能。
[0140]
其中,sql语句规范包括:库表连接数量限制,sql语句长度,sql对数据库资源消耗,索引配置,sql语句判断条件,删除/插入/修改操作等等。具体的sql语句常见的规范性要求有:
[0141]
参与连接操作的表数量(禁止超过3张表复杂join,连接程序禁止使用jion,批处理禁止复杂join);连接操作为指定连接条件;不带条件的update/delete操作;查询语句缺少谓词;查询语句中or谓词超过10个;谓词包含非定位条件;sql中存在union操作;sql语句
使用多层次嵌套;insert语句未指定字段列表;查询语句使用distinct;字段使用了函数等。
[0142]
因此,在软件架构设计阶段,定义数据库架构规范和sql语句规则,通过静态参数检测和sql扫描,解决库、表空间、表、索引等在设计过程中可能引起性能问题的错误。根据软件系统性能要求,对比oracle数据库基准测试性能黄金指标值和对应的参数建议值范围,确定存在问题的oracle数据库参数值。
[0143]
在开发和测试阶段,通过从应用端发起大并发压力,监控oracle数据库的各项指标来进行性能定位和分析。如图3所示,从oracle数据库服务器层入手,分别从服务器资源监控、等待事件分析、oracle组件监控三方面逐层深入,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告。
[0144]
其中,应用与oracle数据库的一般交互流程可如下:
[0145]
应用获取数据库连接,发送sql语句,数据库划分db cpu时间片,db cpu处理sql语句,解析器解析sql语句,执行器执行sql,返回执行结果,应用释放数据库连接。
[0146]
根据以往oracle数据库项目实践,常见问题主要包括:应用数据库之间连接问题、sql解析问题、sql执行问题、数据库事务问题、锁问题、缓存问题、存储问题、数据库设计问题等。
[0147]
如图3所示,本发明从服务器层入手,逐层深入到oracle数据库等待事件层、组件及参数层,来一步步的定位性能瓶颈。主要包括如下3个步骤:
[0148]
步骤1:服务器资源监控及服务器层瓶颈定位分析
[0149]
监控服务器层资源消耗指标,定位对应的流程或组件。应用服务器层监控的指标主要包括:cpu、内存、磁盘、负载曲线等,如图4所示,通过指标阈值设定,超过阈值范围认定为资源指标存在异常,根据[表象,根因]对,定位可能的性能瓶颈组件。其中,高并发低负载场景特指在高并发压力情况下,并发用户逐渐增加,服务器的资源消耗均保持低位,但黄金指标曲线中的平均响应时间超过阈值范围。通过分析服务器的资源消耗,对比oracle数据库基准测试指标,分析服务器层可能的性能瓶颈根因,逐步排查是否oracle数据库所在服务器硬件资源存在性能瓶颈。
[0150]
具体地,如图4所示,针对oracle数据库所在服务器资源出现异常情况,均可对应到底层某个组件或环节出现问题,常见的对应关系可划分成的[表象,根因]对有如下:cpu异常[cpu异常,sql问题][cpu异常,存储问题];io异常[io异常,sql问题][io异常,存储问题][io异常,日志问题];内存异常[内存异常,缓存问题][内存异常,参数问题];高并发低负载[高并发低负载,sql问题][高并发低负载,锁问题]。在实施压测过程中,监控oracle数据库所在服务器资源消耗指标,结合基准测试资源消耗情况和正常压力下服务器资源消耗阈值区间,一方面,可判定oracle数据库所在服务器的硬件资源是否存在性能瓶颈;另一方面,在服务器资源不存在性能瓶颈的情况下,根据[表象,根因]对的匹配,可初步诊断出具体性能问题所在组件或模块,为下一个步骤等待事件或oracle组件的监控指明分析方向。
[0151]
步骤2:等待事件分析及事件层瓶颈定位分析
[0152]
通过数据库全链路业务流程层监控,监控数据库的等待事件类型,分析类型占比来确定具体数据库的哪个模块出现了性能瓶颈问题。每一个等待事件,在进程级别指明数据库的一种活动状态。在oracle数据库系统内置等待事件视图,通过这些视图可以了解整
体(系统级)、局部(会话级)的等待事件发生情况及各类别事件的分类统计。如图6所示,oracle数据库常见的等待事件类型和常见的等待事件,可初步定位造成等待事件原因的分类所在,为下一步细化根因指明方向。
[0153]
具体地,如图6所示,oracle数据库的等待事件类型和常见的等待事件,在压测过程中,通过监控等待事件,监控指标包括:[等待类型,总等待次数,总等待时间,平均等待时间,总等待事件占db time,前台总等待次数,前台总等待时间,前台平均等待时间,前台等待时间占比,前台等待占比,前台总等待事件占db time],对照等待事件和等待事件类型分类,可以确定oracle数据库主要的压力点和db time耗时所在,再结合上述步骤1中数据库服务器资源消耗情况,能进一步确定性能瓶颈点的方向,具体是哪个系统模块出了问题,如由数据库自身系统调度造成,或者用户i/o操作造成。
[0154]
步骤3:oracle组件监控及组件层瓶颈定位分析
[0155]
通过数据库组件层监控,监控数据库执行进程。在oracle组件监控及组件层瓶颈定位分析过程中,基于压力传导路径分析,从应用端入手,如图10所示,分别监控数据库的连接、sql分析执行、事务、锁、存储、日志等组件。各组件的监控指标阐述如下:
[0156]
a.监控数据库的连接
[0157]
组件监控从应用连接源头入手,查看数据库层面应用连接的情况,如每秒登录数/qps/tps/游标数等指标曲线。其中,数据库连接数的变化曲线能反应具体的性能瓶颈点,确认造成性能瓶颈的根源是在应用端,应用与数据库之间的连接,还是数据库端。常见的性能问题有连接参数配置错误、连接不释放、连接池管理失效等。
[0158]
具体而言,数据库的连接监控指标包括:并发数,总连接数,每秒登陆数,tps,qps等,通过对比压测端黄金指标、并发用户数与数据库的连接指标,可判定压力是否传导到数据库端,或连接数参数配置导致出现高并发低负载的情况。
[0159]
b.监控数据库的sql分析执行
[0160]
根据应用与数据库的交互流程,接下来监控分析数据库sql的解析和执行情况。通过分析sql语句的性能统计、sql执行计划、sql查询表统计信息、sql使用索引统计信息等指标数据,查看sql解析次数、占用时间,sql平均响应时间、关键sql的执行时间图等指标,确认是否在sql解析和执行过程中存在问题。
[0161]
从图9的sql执行流程来看,涉及到的oracle流程步骤包括:应用连接数据库,数据库服务器进程接收到一个sql语句时,首先要将其转换成执行这个sql语句的执行计划。检查共享池中是否有之前解析相同的sql语句后所存储的sql文本、解析树和执行计划。如果能命中共享池的缓存库,则sql语句不需要再次解析,可直接由库缓存得到之前所产生的执行计划,从而直接跳到绑定或执行阶段,即软解析的过程;但是如果在共享池的库缓存中找不到对应的执行计划,则必须继续解析sql、生成执行计划,即硬解析的过程。在硬解析的过程中,分析器对sql语句进行语法分析和语义分析,分析是否符合规范,衡量语句中各表达式的意义,检查是否存在语义错误和权限;优化器会决定最佳执行计划,同时更新缓存区;最后执行器按照执行计划执行sql,产生执行结果,当然不同类型的sql语句,执行过程也不同。最后select查询语句会提取查询的记录行返回。
[0162]
具体而言,如图9所示,数据库在接收到应用的sql语句后,其整个操作过程中分析和执行至关重要,常用的监控指标分为总体sql性能监控指标和单个监控指标。其中:
write io requests,physical write bytes,physical write total io requests,physical write total bytes;数据文件监控指标包括:数据库i/o,日志i/o响应时间,数据文件i/o响应时间。结合三个维度的存储指标,对比oracle数据库基准测试i/o指标值,可以确认是否数据库存储存在性能瓶颈。
[0174]
f.监控数据库的日志
[0175]
数据库日志和参数的监控,结合数据库的日志文件,分析数据库执行过程中是否存在错误信息,通过trace、alert、log等日志文件,来进一步判断性能问题所在。
[0176]
从上面三个步骤的监控和定位,从性能瓶颈可能出现的源头出发,从设计阶段的静态扫描到开发测试阶段的整体监控/逐层递进分析的诊断操作思路,实现由表及里,从整体到局部,逐层细节的数据库性能瓶颈定位分析方案,便于普通使用者快速精准的定位数据库性能瓶颈的节点、组件及根因,极大的提升数据库问题分析解决的效率;从服务器资源监控、等待事件分析、数据库组件监控三方面逐层深入,以oracle数据库为例,即从oracle数据库应用级别、进程级别、sql语句级别逐级下钻,分析性能瓶颈点,定位产生性能问题的根因,生成诊断报告,实现数据库性能瓶颈的有效快速精准定位分析。
[0177]
此外,本发明实施例还提出一种数据库性能瓶颈定位分析装置,所述装置包括:
[0178]
监控模块,用于在软件开发测试阶段的压测过程中,监控数据库所在的服务器层的资源消耗指标;
[0179]
定位分析模块,用于根据所述服务器层资源消耗指标,并结合所述数据库的基准测试资源消耗指标和预设的正常压力下服务器资源消耗阈值范围,对所述服务器层的硬件资源是否存在性能瓶颈进行定位分析。
[0180]
本实施例数据库性能瓶颈定位分析的实现原理,可以参照上述各实施例,在此不再赘述。
[0181]
此外,本发明实施例还提出一种数据库性能瓶颈定位分析系统,所述系统包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序程序,所述计算机程序被所述处理器执行时实现如上述实施例所述的数据库性能瓶颈定位分析方法的步骤。
[0182]
本实施例数据库性能瓶颈定位分析的实现原理,可以参照上述各实施例,在此不再赘述。
[0183]
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例所述的数据库性能瓶颈定位分析方法的步骤。
[0184]
本实施例数据库性能瓶颈定位分析的实现原理,可以参照上述各实施例,在此不再赘述。
[0185]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0186]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0187]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台推荐效果评价系统(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本发明每个实施例的方法。
[0188]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

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

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

相关文献