本文涉及: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学习资源

初窥MySQL性能调优的更多相关文章

  1. MySql(十一):MySQL性能调优——常用存储引擎优化

    一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...

  2. MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

    第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...

  3. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  4. MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

    第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化, ...

  5. MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

    第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就 ...

  6. MySQL性能调优与架构设计——第1章 MySQL 基本介绍

    第1章 MySQL 基本介绍 前言:作为最为流行的开源数据库软件之一, MySQL 数据库软件已经是广为人知了. 但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介绍.主 ...

  7. MySQL性能调优与架构设计——第8章 MySQL数据库Query的优化

    第8章 MySQL数据库Query的优化 前言: 在之前“影响 MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query语句对数据库性能的影响非常大,所以本章将专门针对 MySQL 的 ...

  8. MySQL性能调优与架构设计——第6章 MySQL Server 性能的相关因素

    第6章 MySQL Server 性能的相关因素 前言 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数据的操作方面,而数据库应用系统的大部 ...

  9. MySQL性能调优——锁定机制与锁优化分析

    针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能.锁定机制也因此成了各种数据库的核心技术之一.不同数据库存储引擎的锁定机制是不同的,本 ...

随机推荐

  1. 如何使用google解决问题

    如何使用google解决问题 redguardtoo著 文章选自2004年<程序员>杂志第8期P56 前面收集了篇如何问问题的文章就是<学会提问>http://blog.pro ...

  2. Java读取文件时中文路径处理

    读取文件路径时可能存在以下情况: 1.空格,如果出现空格会转变成“%20” 2.中文路径,如果出现中文路径会变成URI编码“%e5%bc%80%e5%8f%91%e5%b7%a5%e7%a8%8b” ...

  3. 个人网站开发***云服务器+Linux+域名***

    作为一个改变世界的程序猿,我们不应该只会埋头写程序修bug还得会点别的, 当然如果要是自己搞个网站玩玩,既可以锻炼技术,没事也可以和圈外的朋友吹吹 牛.因为水平有限,就弄一些最基础的看看喽,不喜勿喷. ...

  4. ssh 执行多条命令包含awk的用法

    格式:ssh user@ip command 单条命令:ssh user@ip command1 多条命令:ssh user@ip "command1;command2" 不加双引 ...

  5. Qt移动应用开发(四):应用粒子特效

    Qt移动应用开发(四):应用粒子特效 上一篇文章介绍了Qt Quick是如何对帧动画进行支持的.帧动画的实现离不开状态机.而状态机.动画和状态切换(transitions)则是Qt框架的核心内容.也就 ...

  6. Highcharts:X轴分组堆叠图

    在设计一个项目中的数据展示页面时.想要设计双X轴,一个轴显示须要的项.一个轴对这些项进行分组.效果如图: Highcharts自带双X轴展示方式.可是效果不是太理想.调整起来也会麻烦些 看到Highc ...

  7. convnet源代码解析(一):基础准备

    Jeremy Lin ConvNet是一个基于GPU实现的卷积神经网络开源码(C++11).是由多伦多大学的Geoffrey Hinton深度学习团队编写的,它的最初版本号是Hinton的学生Alex ...

  8. HDU 1824 Let&#39;s go home (2-SAT判定)

    Let's go home Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. css3最新版中文参考手册在线浏览

    对于CSS 3.0,它对于我们Web设计人员来说不只是新奇的技术,更重要的是这些全新概念的Web应用给我们的设计开发提高了效率以及更多的无限可能性,我们将不必再依赖图片或者 Javascript 去完 ...

  10. Pthon的定时任务APScheduler的启动与关闭

    Pthon的定时任务APScheduler的启动与关闭 安装: sudo pip install apscheduler 使用: 直接运行Python文件即可,如 python XXX.py,XXX. ...