本文涉及:MySQL自带的性能测试工具mysqlslap的使用及几个性能调优的方法

性能测试工具—mysqlslap

mysqlslap是MySQL自带的一款非常优秀的性能测试工具。使用它可以
模拟多个客户端并发向服务器发出查询、更新等请求,然后输出简单的报告

可选参数
  • –engines:代表要测试的引擎,可以有多个,用分隔符隔开
  • –iterations:代表要运行这些测试多少次
  • –auto-generate-sql :代表用系统自己生成的SQL脚本来测试
  • –auto-generate-sql-load-type: 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
  • –number-of-queries:代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算
  • –debug-info 代表要额外输出CPU以及内存的相关信息
  • –number-int-cols :创建测试表的 int 型字段数量
  • -auto-generate-sql-add-autoincrement : 代表对生成的表自动添加auto_increment列
  • –number-char-cols 创建测试表的 char 型字段数量
  • –create-schema 测试的database
  • –query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试
  • –only-print 如果只想打印看看SQL语句是什么,可以用这个选项

如下就是一个简单的使用示例:

1
2
3
4
5
[root@syj ~]# mysqlslap -uroot -proot
--concurrency=500 --iterations=1
--create-schema='test'
--query='select * from u_trade_pay_order limit1000;'
--number-of-queries=10

影响MySQL性能的原因

连接数不够

当连接数使用超过85%以上就说明连接数已经快要不够用了

连接数相关查看方法
1
2
show global status like 'Max_used_connections';
show variables like 'max_connections%';
连接数不够的原因
  • 连接数设置过低或过高
  • 慢查询导致IO阻塞,导致连接长时间不释放
  • SQL执行完,连接未释放
修改MySQL的连接数
1
set global max_connections = 1024;
慢查询

原则上应该单次执行时间超过100ms的SQL就需要考虑优化的事情了

查看慢SQL
1
show global status like 'Slow_queries’;
出现慢查询的原因
  • 索引不合理或没有索引
  • 查询的数据量过大
  • 存在锁
缓存命中率低

若查询缓存命中率 < 95%,则表明缓存大小可能设置过低或者存在大量缓存碎片

缓存命中率计算方法
1
(Qcache_hits – Qcache_inserts) / Qcache_hits * 100%
开启查询缓存
1
set session query_cache_type=on;
提高缓存利用率
  • 使用相同的SQL,例如在MyBatist中使用#而不是$
  • 客户端与服务端使用相同的字符集
  • 增大缓存区的大小
  • insert和update会引起缓存失效

推荐阅读

  1. SpringCloud学习系列汇总
  2. 为什么一线大厂面试必问redis,有啥好问的?
  3. 多线程面试必备基础知识汇总
  4. Java集合源码分析汇总-JDK1.8
  5. Linux常用命令速查-汇总篇
  6. JVM系列文章汇总

博客所有文章首发于公众号《Java学习录》转载请保留
扫码关注公众号即可领取2000GJava学习资源

最新文章

  1. java web学习总结(八) -------------------HttpServletResponse对象(二)
  2. 通过python将图片生成字符画
  3. 外观模式/facade模式/结构型模式
  4. Python学习【第二篇】Python入门
  5. [BZOJ 1483][HNOI 2009]梦幻补丁(有序表启发式合并)
  6. Poj(1220),hash
  7. Poj(2349),最小生成树的变形
  8. 初学cocos2dx-3.x之使用Scale9Sprite时的配置问题
  9. Blog 入职新公司的一些吐槽!
  10. js--eval函数
  11. preg_replace($pattern, $replacement, $content) 修饰符的奇葩作用
  12. http请求方式和状态管理
  13. Django学习手册 - ORM 外键
  14. Nginx在线服务状态下平滑升级及ab压力测试【转】
  15. [Python] Marshmallow QuickStart
  16. [转贴] 软件测试职业发展的 A 面和 B 面
  17. 解决在html中引入font-awesome的css文件后, 图标显示不出来
  18. PHP20-challenge12
  19. (二)windows上使用docker
  20. [Data Access] ORM 原理 (11): 效能議題

热门文章

  1. Java面试题总结之Java基础(三)
  2. java 数组 输入5名学生的成绩 得出平均分。
  3. Spring中基于AOP的@AspectJ
  4. HDOJ 5416 CRB and Tree DFS
  5. 【转载】《Unix网络编程》思维导图
  6. 【APUE】线程与信号
  7. phpexcel不能输出中文
  8. html2canvas 导出包含滚动条的内容
  9. [Tue, 11 Aug 2015 ~ Mon, 17 Aug 2015] Deep Learning in arxiv
  10. 2016/3/30 ①投票checkbox ②进度条两个div套起百分比控制内div(width) &lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt; ③数据库test2 表 diaoyan... 35岁发展方向投票