初窥MySQL性能调优

本文涉及: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语句是什么,可以用这个选项

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

[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%以上就说明连接数已经快要不够用了

连接数相关查看方法

show global status like 'Max_used_connections';	
show variables like 'max_connections%';

连接数不够的原因

  • 连接数设置过低或过高

  • 慢查询导致IO阻塞,导致连接长时间不释放

  • SQL执行完,连接未释放

 

修改MySQL的连接数

set global max_connections = 1024;

慢查询

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

查看慢SQL

show global status like 'Slow_queries’;

出现慢查询的原因

  • 索引不合理或没有索引

  • 查询的数据量过大

  • 存在锁

缓存命中率低

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

缓存命中率计算方法

 (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

开启查询缓存

set session query_cache_type=on;

提高缓存利用率

  • 使用相同的SQL,例如在MyBatist中使用#而不是$

  • 客户端与服务端使用相同的字符集

  • 增大缓存区的大小

  • insert和update会引起缓存失效

 

640?wx_fmt=jpeg

万水千山总是情,点个 “在看” 行不行!!!

640?wx_fmt=png 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值