首页 > 数据库 >性能测试中MySQL数据库连接数问题定位和分析【杭州多测师】【杭州多测师_王sir】

性能测试中MySQL数据库连接数问题定位和分析【杭州多测师】【杭州多测师_王sir】

时间:2022-10-04 22:11:44浏览次数:48  
标签:sir 多测师 name age 数据库 索引 MySQL 杭州 class

一、MySQL数据库的联合索引

1、采用50个并发、持续压测300秒、在Linux服务器输入jmeter -n -t test.jmx

2、数据库中创建了联合索引:name、age、class这3个字段都用的同一个索引my_index并且是unique类型的

3、按理来说都是unique类型的性能应该是最好的、在接口请求里面http://ip:8080/user/search?age=18&class=1 去请求接口

4、在Linux服务器端通过dstat -tcmnd --disk-util命令去监控应用服务器发现CPU还是消耗的比较多、数据库服务器里面CPU的idle已经为0%、没有空闲的CPU了

5、然后tps又恢复到300多了、说明还是存在慢SQL的问题

6、继续进行排查发现一个问题、联合索引属于左前缀使用的原则、就是数据库设置联合索引的时候是按照的name、age、class字段是设置的、这样会导致如果用selec * from student where name=xxx and age

和select * from student where name=xxx and class=xx 这样查询的是没有问题的、因为name在最前面是可以作用到unique的

7、但是如果是select * from student where age=18 and class=1里面是没有包含name字段的、并且如果有name字段但是也不是在最左侧查询出来unique索引也是作用不到的、对SQL进行explain发现还是用的扫描类型为全表扫描

所以才导致慢SQL性能大打折扣

8、这种情况的话可以把数据库中的索引顺序改为name、age、class、然后搜索的时候采用最左前缀原则、瞬间tps就提升了60倍能达到18000多tps了

 

二、MySQL数据库的连接数

1、

标签:sir,多测师,name,age,数据库,索引,MySQL,杭州,class
From: https://www.cnblogs.com/xiaoshubass/p/16754614.html

相关文章