干货实战-- sql调优之慢查询定位大法
Posted 栗子~~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货实战-- sql调优之慢查询定位大法相关的知识,希望对你有一定的参考价值。
文章目录
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
sql调优之慢查询定位大法
01 前期准备
限:mysql
CREATE TABLE `test` (
`id` bigint(200) NOT NULL AUTO_INCREMENT,
`age` varchar(200) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
INSERT INTO `testdb`.`test`(`id`, `age`, `name`) VALUES (1, '21', 'noTransactional');
INSERT INTO `testdb`.`test`(`id`, `age`, `name`) VALUES (3, '9879', 'noTransactional');
INSERT INTO `testdb`.`test`(`id`, `age`, `name`) VALUES (4, '24332', 'noTransactional');
CREATE TABLE `test_version` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`version` varchar(50) DEFAULT NULL COMMENT '版本号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
INSERT INTO `testdb`.`test_version`(`id`, `version`) VALUES (1, '1');
01::01 数据可视化
02 慢查询日志定位的作用
通过慢查询日志定位效率低的sql语句
注: 不是用来分析某个已知的语句。
03 配置相关信息
03::01、查看相关信息:
show VARIABLES like ‘%slow%’;
上面的信息是我配置后的。
03::02 配置日志相关信息
set global slow_query_log = on;
set global slow_query_log_file = ‘D:\\db-sql-slow.log’;
set global log_queries_not_using_indexes = on;
03::03 配置慢查询时间点
设置long_query_time的值,单位为妙,超过该数值的语句会被纳入慢查询日志。
set long_query_time = 0.00001;
这里设置成0.0001 妙,测试用。
查看是否配置成功:
show VARIABLES like ‘long%’;
04 测试慢查询定位效率低的sql
04::01 相关名词
序号 | 名词 | 含义 |
---|---|---|
1 | Time | 日志记录的时间 |
2 | User@Host | 执行的用户及主机 |
3 | Query_time | 查询耗费时间 |
4 | Lock_time | 锁表时间 |
5 | Rows_sent | 发送给请求方的记录条数 |
6 | Rows_examined | 语句扫描的记录条数 |
7 | SET timestamp | 语句执行的时间点 |
8 | select … | 执行的具体语句 |
04::02 执行测试语句:
SELECT * from test_version o left join test p on o.id = p.id and p.id in(‘1’);
查看之前配值的日志地址,并打开
从上面截图,可以总结出:
SELECT * from test_version o left join test p on o.id = p.id and p.id in(‘1’);的执行时间超过0.00001,导致被记录在慢查询自定义日志中。
验证通过!!!
以上是关于干货实战-- sql调优之慢查询定位大法的主要内容,如果未能解决你的问题,请参考以下文章