0
点赞
收藏
分享

微信扫一扫

mysql数据库的性能测试调优

汤姆torn 2023-04-18 阅读 56

在常用的系统中,离不开数据库,在一些常用的接口中,往往业务逻辑处理完成后,查询返回想要的数据。查询的优化是性能测试中间件常常关注的点。本文结合jmeter压测数据库,针对连接数和索引值来进行对比分析。

一: 数据准备,两张表,分别为students表和company表。students表结构为下图:

mysql数据库的性能测试调优_数据

company表结构如下图:

mysql数据库的性能测试调优_数据_02

其中两个表通过students表中的id关联company表中的s_id去查询操作;

通过存储过程生成1万条数据

delimter //

create procedure setStu():

begin

declare i int default 0;

while i <10000 do

insert into students() values(0,concat('张三',i),'三年级4班',ceil(rand()*100),date(now()),'1');

set i = i+1 ;

end while;

end

//

delimiter;


delimiter //

create procedure setCom()

begin 

declare j int default 0;

while i< 10000 do 

insert into company() values(0,j,'xxx信',date(now()),floor(rand()*10000));

set j = j+1;

end while;

end 

//

delimiter;

分别执行 call setStu(); call setCom();

执行完毕后,查看数据 select max(id) from students;

二: jmeter准备 

jmeter下载,自行百度。

打开后,在测试计划中放入mysql-connector-java-8.0.22.jar

新建线程组,加入jdbc连接器

mysql数据库的性能测试调优_bc_03

Database URL :jdbc:mysql://localhost:3306/xxxx?serverTimezone=UTC&characterEncoding=utf-8,后缀加上,保持为中文;

jdbc driver:选择mysql

username: 用户名 

password: 密码

注意 variable Name for created pool 和jdbc request中的

mysql数据库的性能测试调优_数据_04

保持一致。

(1)不限制连接数 和不加索引,随便写了一个sql 

select s.name,s.class,s.scores,c.c_name,c.salary from students s left join company c on s.id = c.s_id where name in ('张三996','张三433','张三954','张三934');

使用线程数100,ramp-up时间 5 循环次数 350 

开始执行,查看执行结果

mysql数据库的性能测试调优_数据_05

添加索引

create index name_index on students(name(255)); 

添加索引后,再次执行;

mysql数据库的性能测试调优_bc_06

通过对比,效率提升了4倍,吞吐量上升了一倍;

(2)添加索引后限制连接数

mysql数据库的性能测试调优_mysql_07

执行后查看:

mysql数据库的性能测试调优_数据_08

通过和上图对比,吞吐量没有什么变化,但是响应时长,发生了很大变化。


举报

相关推荐

0 条评论