【性能测试】数据库索引问题定位/分析+ 架构优化+ SQL优化+ 代码优化(详全)

news2024/11/28 18:44:54

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

索引问题定位与分析

1、数据库服务器添加慢查询配置

1)my.cnf文件添加监控慢查询配置

cd /etc/my.cnf
vi my.cnf

添加如下配置:

slow_query_log=1
long_query_time=0.01

请添加图片描述

2)重启数据库服务器

systemctl restart mysqld

3)检查配置是否生效

show variables like '%slow_query_log%';

在这里插入图片描述

cd /var/lib/mysql

请添加图片描述

2、慢查询日志分析

1)打印查询次数前20的sql语句

mysqldumpslow -s at -t 20 huangshao-slow.log

请添加图片描述

2)对慢查询sql语句进行执行计划分析

在navicat里面拷贝慢查询语句,执行前加explain表示分析sql

在这里插入图片描述

Const:表中只有一个匹配行,用到primary key或unique key

Eq_ref:唯一性索引扫描,key的所有部分被连接联接查询使用,且key是unique或primary key

ref:非唯一性索引扫描,或只使用了联合索引的最左前缀

Range:索引范围扫描,在索引列上进行给定范围内的检索,如between,in(1,100) Index:遍历索引…

All:全表扫描

Prossible key:使用哪个索引能找到行

Keys:sql语句使用的索引

rows:mysql 根据索引选择情况,估算查找数据所需读取的行数

3、优化方案

1)添加索引

选择sql语句中where字句中的字段添加索引,并保存索引

在这里插入图片描述

索引类型:

Normal:普通索引,允许重复数据
Unique:非普通索引,不允许重复数据
Fulltext:全文索引,适用于大字段

在这里插入图片描述

2)sql执行计划分析

explain
select
id, user_name, password, age, gender, phone_num, email, address, create_time, update_time
from user
where user_name = 'user_100'

在这里插入图片描述

3)优化效果对比

Tps提升10倍,响应时间减少90%

请添加图片描述

应用服务器cpu使用率提升65%

请添加图片描述

数据库服务器cpu使用率提升80%

请添加图片描述

数据库架构优化

1、分库分表

1)整除取余

比如有user有10个库,每个库有100张表
userid=100087存放的数据库和表格的路径

100087%10=7 第7个库
10087%100=87 第87张表

2)根据id最后1位和两位插入数据库和表

Id的最后1位为数据库的位置
Id的最后两位为表格的位置

2、读写分离,主从配置

主数据库进行写的操作
从数据库进行读的操作

Sql语句优化

1、在where及order by后的字段,添加索引。避免全表扫描。一般不要超4个

2、避免索引失效:
避免where字句中对字段进行null值判断,
避免where字句中对字段进行函数或者表达式的操作
避免where字句中对字段进行左右模糊查询

3、查询语句避免*,减少内存使用

4、用union或者union all 替代or

5、适当添加冗余字段,减少联表查询

6、建表的时候,使用数字类型的字段。比如type,status

7、尽量减少子查询,使用关联查询(left join,right join,inner join)替代

代码优化

1、使用对象池减少对重复对象的创建,比如tcp链接、数据库链接、多线程

2、调整连接数,连接池、数据库链接数、tomcat、nginx连接数

3、利用缓存技术增加缓存、本地缓存(tomcat内存之中,不走网络)、redis缓存

4、串行改并行,即单线程改多线程

5、同步改异步,使用场景:
本次调用接口的结果会影响后续操作的流程和结果;
本次调用接口的结果不会影响后续的操作的流程和结果;

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

坚定的信念和不屈的毅力是成功的关键,只要你怀揣着梦想,敢于冒险并不断努力奋斗,就一定能够创造属于自己的辉煌人生。

相信自己的力量,坚持不懈地追逐梦想,即使面对困难和挑战,也要勇往直前,因为只有奋斗才能让生命绽放出最美的光芒。

在漫长的人生旅程中,不要畏惧失败与挫折,每一次跌倒都是一次成长,坚持追逐梦想,奋斗不止,你将绽放出属于自己的绚丽光芒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5——源码阅读——101——渲染——高清截图

获取当前World和时间 世界存在 并准备进行更改的时候 视口是否使用立体渲染 捕获调试画布 设置RenderingTarget 设置主画布,按比例缩放到渲染目标上 拿到引擎的Flag,覆盖函数 为视口设置FSceneViewFamily 每英寸内像素的点数 当前视口是否支持HDR 设置焦点…

Writing an OS in Rust : Allocator Designs 分配器设计与实现

原文地址 为了保证概念的严谨性,翻译时保留了英文原文。 This post explains how to implement heap allocators from scratch. It presents and discusses different allocator designs, including bump allocation, linked list allocation, and fixed-size blo…

JAVA深化篇_34—— 全网最全JAVA多线程总结思维【不看保准后悔,可供下载】

全网最全JAVA多线程总结思维导图奉上:(下载后为超高清图) 文章上方提供PDF版本,有需要的小伙伴可以自取呦!感谢小伙伴支持!

浅谈能耗系统在马来西亚连锁餐饮业的应用

1.背景信息 Background 针对连锁餐饮业能耗高且能源管理不合理的问题,利用计算机网络技术、通讯技术、计量控制技术等信息化技术,实现能源资源分类分项计量和能源资源运行监管功能,清晰描述各分店总的用能现状;实时监测各供电回路…

python_寻找N字型下跌

目录 写在前面: 思路拆解: 代码: 验证: 写在前面: 1 由于日线骗线多,本文寻找N字型下跌形态在周线级别操作 2 N字型下跌形态,技术辅助寻找的点: 1)左连阴 连阳 …

【加载自定义控制器 Objective-C语言】

一、接下来要做的操作,就比较关键了 1.前面,我们在从UI基础,然后到UI进阶,第一天,然后到目前为止, 所有的应用程序,新建的项目,启动以后,加载的控制器,是不是都是Main.storyboard里面带箭头儿的那个控制器, 然后呢,你也可以通过新建一个storyboard,然后呢,给它…

JavaScript_DOM概述

1、DOM 概述 2、节点 7种节点的类型: 3、节点树 4、Node.nodeType属性 不同节点的nodetype属性值和对应的常量如下:

微服务之Nacos注册管理

文章目录 一、Nacos安装步骤1.安装地址2.安装版本3.目录说明4.端口配置5.启动 二、Nacos服务注册1.Nacos依赖2.客户端修改配置文件3.启动效果图4.总结 三、Nacos服务集群属性1.服务跨集群调用问题2.服务集群属性3.总结 四、Nacos根据集群负载均衡1.修改配置文件2.设置集群服务类…

领跑中国APM市场,博睿数据蝉联第一!

近日,全球领先的IT市场研究和咨询公司IDC发布《中国IT统一运维软件产品市场跟踪报告,2023H1》,报告显示,博睿数据以市场份额20.14%再创新高,蝉联APM市场第一。 2023年上半年,APM市场呈现同比增长的趋势。在…

润和软件HopeStage与奇安信网神终端安全管理系统、可信浏览器完成产品兼容性互认证

近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与奇安信网神信息技术(北京)股份有限公司(以下简称“奇安信”)终端安全管理系统、可信浏览器完成产品兼容性测试。 测试…

win中安装nvm进行Node版本控制

之前有安装node.js安装包的需要先给卸载掉先通过官网下载安装包nvm-setup.zip nvm官网地址命令行打开输入nvm -v,测试安装是否成功 此时如果进行node相关版本安装的话,可能下载速度过慢,此时需要更换镜像源。 斜体样式找到nvm的安装路径 &am…

22款奔驰GLE450加装原厂360全景影像 打破死角

360全景影像影像系统提升行车时的便利,不管是新手或是老司机都将是一个不错的配置,无论是在倒车,挪车以及拐弯转角的时候都能及时关注车辆所处的环境状况,避免盲区事故发生,提升行车出入安全性。 360全景影像包含&…

线上 kafka rebalance 解决

上周末我们服务上线完毕之后发生了一个kafka相关的异常,线上的kafka频繁的rebalance,详细的报错我已经贴到下面,根据字面意思:消费者异常 org.apache.kafka.clients.consumer.CommitFailedException: 无法完成提交,因为…

中国计算机学会推荐国际学术会议和期刊目录

后面还有很多,我就不一一列出来啦,有需要的小伙伴可以自行下载哈 等等等

CRM怎样帮助您的企业进行营销管理?

​ CRM助力企业营销管理,为企业降本增效提升投入产出比。CRM软件是如何实现的呢? 扩大线索量 想要精准获客的第一步是要扩大线索量,多渠道营销推广是很好的方法。例如: 1.线下展会线上Webinar等市场活动 2.搭建微信、微博、…

DataFrame的基本用法

目录 一、定义/读取 DataFrame 1.定义DataFrame 2.定义一个空的DataFrame 3.从csv中读取DataFrame 二、读取行列 1.直接读取行列 2.使用 .loc() 读取行列 3.使用 .iloc() 读取行列 4.读取前 n 行 5.读取并修改列名 6.读取并修改行名 7.df的转置 三、删除和增加 …

防逆流系统中防逆流电表的正确安装位置-安科瑞黄安南

随着光伏行业的发展,部分地区村级变压器及工业用电变压器容量与光伏项目的装机容量处于饱和。电网公司要求对后建的光伏并网系统为不可逆流发电系统,指光伏并网系统所发生的电由本地负载消耗,多余的电不允许通过低压配电变压器向上级电网逆向…

【操作系统】2009年408真题第 46 题

文章目录 题目描述1)依次访问上述三个虚地址,各需多少时间?给出计算过程2)基于上述访问序列,虚地址1565H的物理地址是多少?请说明理由 原题 & 官方题解 题目描述 46(8分)请求分…

centos获取服务器公网ip

查看公网IP 用下面几个命令: #curl ifconfig.me #curl icanhazip.com #curl cip.cc

可能是 Python 中最火的第三方开源测试框架 pytest!

一、介绍 本篇文章是《聊聊 Python 的单元测试框架》的第三篇,前两篇分别介绍了标准库 unittest 和第三方单元测试框架 nose。作为本系列的最后一篇,压轴出场的是Python 世界中最火的第三方单元测试框架:pytest。 它有如下主要特性&#xf…