Mysql 慢查询和慢查询日志分析
2023-09-11 14:21:55 时间
众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的。下面总结一些使用过或者研究过的经验,从配置以及调节索引的方面入手,对mysql进行一些优化。
第一步应该做的就是排查问题,找出瓶颈,所以,先从日志入手
开启慢查询日志
mysql>show variables like “%slow%”; 查看慢查询配置,没有则在my.cnf中添加,如下
log-slow-queries = /data/mysqldata/slowquery.log #日志目录 long_query_time = 1 #记录下查询时间查过1秒 log-queries-not-using-indexes #表示记录下没有使用索引的查询
分析日志 – mysqldumpslow
分析日志,可用mysql提供的mysqldumpslow,使用很简单,参数可–help查看
# -s:排序方式。c , t , l , r 表示记录次数、时间、查询时间的多少、返回的记录数排序; # ac , at , al , ar 表示相应的倒叙; # -t:返回前面多少条的数据; # -g:包含什么,大小写不敏感的; mysqldumpslow -s r -t 10 /slowquery.log #slow记录最多的10个语句 mysqldumpslow -s t -t 10 -g "left join" /slowquery.log #按照时间排序前10中含有"left join"的
推荐用分析日志工具 – mysqlsla
wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz tar zvxf mysqlsla-2.03.tar.gz cd mysqlsla-2.03 perl Makefile.PL make make install mysqlsla /data/mysqldata/slow.log # mysqlsla会自动判断日志类型,为了方便可以建立一个配置文件“~/.mysqlsla” # 在文件里写上:top=100,这样会打印出前100条结果。
【说明】 queries total: 总查询次数 unique:去重后的sql数量 sorted by : 输出报表的内容排序 最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数. Count, sql的执行次数及占总的slow log数量的百分比. Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比. 95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间. Lock Time, 等待锁的时间. 95% of Lock , 95%的慢sql等待锁时间. Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量. Rows examined, 扫描的行数量. Database, 属于哪个数据库 Users, 哪个用户,IP, 占到所有用户执行的sql百分比 Query abstract, 抽象后的sql语句 Query sample, sql语句
相关文章
- MySQL按指定字段自定义列表排序
- 【MySQL】MySQL多实例开机自动重启
- 【MySql】mysql 数据库数据订正
- 【MySql】 慢日志查询工具之mysqlsla
- MySQL数据库MyISAM和InnoDB存储引擎的比较
- XtraBackup出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- MySQL max_allowed_packet设置及问题
- 从【MySQL server has gone away】说起
- Mysql中count(*),DISTINCT的使用方法和效率研究
- MySQL [Warning] Can’t create test file xxx lower-test(转)
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
- CentOS 6.3 + nginx-1.2.5 + php-5.4.9 + MySQL-5.5.28
- MySQL 数据库日志切割脚本
- Mysql 复制数据库及数据
- mysql 有报错 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
- 登录到mysql查看binlog日志
- [Docker] MySQL with spring docket image
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
- Mysql 如果有多个可选条件怎么加索引_MySQL|mysql-索引
- Mysql JDBC驱动版本与Mysql版本的对应问题
- GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用
- Mysql的mysqldump详解 mysql数据库备份和导入
- CentOS中Mysql常用操作
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- MySQL-第十一章-读写分离(ProxySQL)