码迷,mamicode.com
首页 > 数据库 > 详细

性能测试四十二:sql案例之联合索引最左前缀

时间:2019-03-23 13:02:31      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:tail   案例   jmeter   tps   场景   重复   多个   slow   唯一性   

联合索引:一个索引同时作用于多个字段

 

联合索引的最左前缀:

A、B、C3个字段--联合索引

这个时候,可以使用的查询条件有:A、A+B、A+C、A+B+C,唯独不能使用B+C,即最左侧那个字段必须匹配到

联合索引最左前缀如果匹配不到,会造成索引失效,对性能影响非常大,所以联合索引的顺序很重要

 

看一下案例

技术图片

Unique:

这种情况,单个cardNO、course、sex均允许重复,但是当这3个字段组到一起以后,就不允许任何两个重复,这里为了设计特别场景,把sex移到索引字段的最前面

技术图片

 

接口:http://localhost:8080/PerfTeach/SlowQuery?cardNO=10009&course=Math 

技术图片

 

 由于数据库里面,cardNO和course是意义对应的,所以需要把数据库里面的数据导出来

技术图片

技术图片技术图片技术图片技术图片技术图片

由于这个需要一一对应,所以在jmeter中创建CSV_read函数

技术图片技术图片

10个线程跑600秒

响应时间:1300多左右

技术图片

 

TPS:20多

技术图片

TOP查看:mysql占的最多

技术图片

 

看慢查询的日志,在不断的写数据进去

技术图片

 

用tail命令看一下

技术图片

 

分析一下这条语句,type又是ALL了

技术图片

 

 因为之前建的索引,第一个字段是sex,而sql里面没有用到sex,只有cardNO和course,即出现的是B+C的情况

这种情况的解决方法,就是换索引里面字段的顺序:

技术图片

type变为ref了

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

 技术图片

再压一下

TPS:220左右,提升了接近10倍

技术图片

响应时间:130毫秒左右,差不多是原来的十分之一

技术图片

TOP:CPU使用率降下来了

技术图片

性能测试四十二:sql案例之联合索引最左前缀

标签:tail   案例   jmeter   tps   场景   重复   多个   slow   唯一性   

原文地址:https://www.cnblogs.com/malinalian/p/10583298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!