mysql慢查询日志
程序员文章站
2022-06-02 12:15:19
...
问题: 如何发现查询慢的语句???
mysql提供慢查询日志功能,如果查询超过一定的阈值,就会记录下来!这样便于我们分析系统慢的原因。
查看慢查询日志功能是否开启:
MariaDB [(none)]> show variables like 'slow_query_log'
-> ;//
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | OFF |
+----------------+-------+
如上显示我的数据库的慢查询功能是关闭的。
如何开启慢查询日志功能;
在mysql的启动配置文件中进行配置,我以前的问题中提到过,如何查找mysql的启动配置文件,如何检验是否生效。
在[mysqld] 项目下添加如下配置
slow_query_log=1
slow-query-log-file=/Users/wangqiupeng/mysql_slow.log
long_query_time = 1
log-queries-not-using-indexes = true
下面对以上进行说明:
slow_query_log =1 代表开启 0代表关闭
slow-query-log-file 代表日期存放的位置
long_query_time 慢查询的阈值,多少秒才算慢查询? 注意单位是秒如果想表示毫秒 0.1代表100毫秒
log-queries-not-using-indexes = true 代表没有走索引的查询也会写入日志中
如上我们配置了以后执行查询看下效果:
MariaDB [prf]> select count(1) from test_myisam where status =1;
+----------+
| count(1) |
+----------+
| 1997133 |
+----------+
1 row in set (1.76 sec)
这个查询消耗了1.76秒,自然大于1秒,慢查询日志中应该进行显示
现在查看慢查询日志,显示如下,这样我们能够分析这个sql进一步定义问题了。
ss:~ wqp$ cat mysql_slow.log
/usr/local/Cellar/mariadb/10.1.13/bin/mysqld, Version: 10.1.13-MariaDB (Homebrew). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
# Time: 160730 14:58:02
# [email protected]: root[root] @ localhost []
# Thread_id: 4 Schema: prf QC_hit: No
# Query_time: 1.856922 Lock_time: 0.004052 Rows_sent: 1 Rows_examined: 6000006
# Rows_affected: 0
use prf;
SET timestamp=1469861882;
select count(1) from test_myisam where status =1;
上一篇: 梅子的害处多还是好处多
下一篇: ORACLE读*