性能测试经典案例解析——政务查询系统

2024-09-07 06:28

本文主要是介绍性能测试经典案例解析——政务查询系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各位好,我是 

@道普云

一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。

欢迎关注我的主页

@道普云

文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。

希望这篇文章对想提高软件测试水平的你有所帮助。


政务查询系统的用户量相对来说是比较小的,但是它的复杂性和对实时性的要求是比较高的,我们以一个主要提供单位信息业务复杂查询功能的系统为例。

在测试过程中主要发现某查询业务在生产环境响应时间过长,超过20秒,但是在测试环境响应时间却较快,只有3秒左右。相关数据表也已经建立了索引。而且生产环境配置比测试环境高,按理说生产环境配置更高它应该更快。针对这个问题,我们要找出为什么在生产环境中慢?

接下来我们就通过时间分布分析、环境差异分析、数据库监控分析、SQL执行分析这几个方面去进行分析。

时间分布分析

业务响应时间主要消耗在SQL执行时间。

生产环境SQL执行时间在26秒。

测试环境SQL执行时间在3秒以内。

环境监控比对分析

生产环境数据量59万,使用CentOS、Oracle 12c Rac,硬件配置较高。

测试环境数据量176万,使用Windows server 2016、Oracle 12c 单节点,硬件配置较低。

服务器资源在正常范围内。

数据库监控分析(AWR)

Oracle实例处理器、内存资源指标正常。

Oracle实例中没有明显的等待事件。

存在问题的SQL语句执行计划COST在生产环境、测试环境存在巨大差异。

SQL语句执行分析(1)

SQL语句执行分析(2)

生产环境SQL语句中排序相关操作由于没有经过索引,造成IO过高。

Oracle实例中排序相关参数Sort_Area_Size、workarea_size_policy配置存在问题。

通过去除SQL语句中的排序操作,SQL执行时间大幅度提升。

通过性能问题综合分析我们得到的诊断结果是:定位索引失效原因。

通过与开发、运维人员沟通,了解到该表是通过数据迁移在生产环境进行创建。

在数据迁移过程中,表的rowid发生变化,造成索引失效。

解决方法:

通过新建表空间重新导入数据表、重建索引解决。

Alter index index_name rebuild tablespace tbs_name;

Alter index pk_name rebuild tablespace tbs_name;

这篇关于性能测试经典案例解析——政务查询系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144311

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查