专栏首页Java学习录初窥MySQL性能调优

初窥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会引起缓存失效

不得不看

1.SpringCloud系列博客汇总

2.为啥一线大厂面试必问Redis,有啥好问的?

3.Java多线程面试必备基础知识汇总

4.Java集合源码分析汇总

5.Linux常用命令汇总

6.JVM系列文章汇总

本文分享自微信公众号 - Java学习录(Javaxuexilu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql学习(2)——Mysql双机热备

    参考博客《CentOS系统MySQL双机热备配置》。 参考官方文档https://dev.mysql.com/doc/refman/5.6/en/replic...

    胡了了
  • 推陈出新:12C 推进 SCN 新方法实践

    在数据库异常恢复中,经常需要修改数据库的 SCN 值,在 12C 之前,我们常用的方法有如下几个:

    数据和云01
  • Sql Server查看所有数据库名,表名,字段名(SQL语句)

    1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name

    静谧的小码农
  • Mysql SSH隧道连接使用方法

    为了安全,mysql的root用户只本机登录,不对外网进行授权访问,此时可通过SSH隧道连接mysql数据库。以下为配置Mysql SSH隧道连接的基本步骤。

    用户1161110
  • Spring 配置数据库用户名密码加密

    对于一般的spring框架,经常要用到数据源配置,如果是用xml配置的话,一般都是如下形式

    汤高
  • Mysql学习(1)——Mysql安装

    mysql-devel:开发用到的库以及包含文件。 mysql:mysql客户端。 mysql-server:数据库服务器。

    胡了了
  • Centos7 安装Mysql5.

    复制mysql/support-files/目录下的my-default.cnf文件,替换原有的my.cnf。

    用户1161110
  • 目标检测 - YOLO9000 : Better, Faster, Stronger

    本文主要有两点: 1)改进YOLO,提出了 YOLOv2,速度快,效果好。67 FPS, YOLOv2 gets 76.8 mAP on VOC 2007;...

    用户1148525
  • 深度抠图--Deep Image Matting

    CVPR2017 https://arxiv.org/abs/1703.03872

    用户1148525
  • AlexNet- ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks

    用户1148525

扫码关注云+社区

领取腾讯云代金券