前言
性能测试过程中,数据库相关指标的监控是不可忽视的,在这里我们就MySQL的监控配置及重点涉及性能的一些参数进行说明。
在笔者的日常性能测试过程中,重点关注了这些参数,但不代表仅仅只有这些参数对性能有影响。
还需要大家在实践过程中,结合实际情况来调整相关参数,分析相关指标。达成深入优化的效果。
配置以下配置选项开启记录慢查询和没有使用索引的查询功能
编辑 my.cnf或者my.ini文件。
注: 只对linux下进行说明。windows请自行去搜索。
将下述几行前的注释符号去掉,以开启相关功能
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes
输入,即可在console中查看到对应的慢sql和未使用索引的查询语句了。
tail -f mysql.log
显示哪些线程正在运行,如下图:
这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:
大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
查看MySQL服务器状态信息。
直接使用该命令会输入几百行的数据,很难看。
下面我们看几个常用的带选项的命令
show status like 'uptime';
show status like 'com_select';
show [global] status like 'com_insert';
show [global] status like 'com_update';
show [global] status like 'com_delete';
show status like 'Thread_%';
show status like 'connections';
show status like 'threads_cached';
show status like 'table_locks_immediate';
show status like 'table_locks_waited';
show status like 'slow_queries';
show global status like '%slow%';
慢查询日志有可能会有很多重复的sql语句,我们如何过滤呢?Mysql有自带的命令mysqldumpslow可进行查询,例下列命令可以查出访问次数最多的20个sql语句
mysqldumpslow -s c -t 20 host-slow.log
通过mysql自带profiling(性能分析)工具可以诊断某个sql各个执行阶段消耗的时间,每个执行阶段在cpu disk io等方面的消耗情况。
show variables like '%profiling%';
mysql还有其他监控分析命令,需要大家去了解,请自行去搜索或是看官方文档,对于本文中列的命令,请几下来,并将本文收藏。在用的时候多尝试。