网站首页 > 技术文章 正文
文章目录
- 前言:
- 开启并设置慢查询语句的时间
- 1. 查看是否开启慢查询语句
- 2. 开启慢查询
- 3. 修改满查询定义的时间
- 4. 开启 记录没有使用索引的查询
- 5. 查询有多少慢查询记录
- 分析工具
前言:
mysql慢查询日志用来记录mysql在相应时间内超过阈值的语句。 阈值定义在long_query_time里。
mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
1234567
从上面的查询出来的结果可以看到,long_query_time的默认值为10,意思是运行10S以上的语句定义为慢查询语句。当然这个数字你可以进行修改,今天我们就来聊聊在做mysql调优时,必会的那些慢查询语句。
开启并设置慢查询语句的时间
1. 查看是否开启慢查询语句
2. 开启慢查询
mysql> set global slow_query_log=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%slow_query_log%';
+---------------------+---------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/run/mysqld/mysqld-slow.log |
+---------------------+---------------------------------+
2 rows in set (0.00 sec)
zmgaosh 致码高胜寒
1234567891011121314
3. 修改满查询定义的时间
方法一: 在数据库里设置
mysql> set global long_query_time=4;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 4.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
致码高胜寒提示: 这里设置完有时候不生效,需要退出并重新连接数据库即可。
zmgaosh
123456789101112
方法二: 在配置文件里设置
在[my.ini]中添加如下信息:
[mysqld]
log-slow-queries=" /var/run/mysqld/mysqld-slow.log" ## mysql慢查询日志目录
long_query_time = 4 ## 最长执行时间(超过这个时间就背记录到慢查询日志里)
log-queries-not-using-indexes ## 没有使用索引的查询也被记录在日志里
123456789
4. 开启 记录没有使用索引的查询
设置开启:
mysql> set global log_queries_not_using_indexes=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON |
+-------------------------------+-------+
1 row in set (0.00 sec)
zmgaosh
1234567891011
5. 查询有多少慢查询记录
mysql> show global status like '%Slow-queries%';
Empty set (0.00 sec)
12
分析工具
- mysqldumpslow
- show processlist
- explain
- 使用zabbix监控获取数据的IO,cpu,连接数信息(准确度不高)
在这里前三个工具经常使用,最后一个用的比较少,因为可靠度不够。
猜你喜欢
- 2024-10-27 MySQL左查询最全介绍(sql 左查询)
- 2024-10-27 mysql查询指定父级下所有子级(mysql根据子节点查父)
- 2024-10-27 MySQL数据库入门(七)多表查询及大量练习
- 2024-10-27 mysql进行数据查询(单表查询)(mysql 查询数据表)
- 2024-10-27 【执行计划】MySQL如何执行查询?(mysql执行查询语句)
- 2024-10-27 MySQL查询列必须和group by字段一致吗?
- 2024-10-27 查看MySQL所有数据库列表(mysql怎么查看数据库列表)
- 2024-10-27 有一张1000W 数据记录的表,主键id自增,如何随机抽取10条记录?
- 2024-10-27 MySQL进阶实战7,查询的执行过程(mysql查询机制)
- 2024-10-27 说说 MySQL 子查询(在mysql中子查询是)
- 11-26Win7\8\10下一条cmd命令可查得笔记本电脑连接过的Wifi密码
- 11-26一文搞懂MySQL行锁、表锁、间隙锁详解
- 11-26电脑的wifi密码忘记了?一招教你如何找回密码,简单明了,快收藏
- 11-26代码解决忘记密码问题 教你用CMD命令查看所有连接过的WIFI密码
- 11-26CMD命令提示符能干嘛?这些功能你都知道吗?
- 11-26性能测试之慢sql分析
- 11-26论渗透信息收集的重要性
- 11-26如何查看电脑连接过的所有WiFi密码
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)